[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Appending to file in arbitrary position

Tulsi Das

11/27/2006 2:49:00 PM

Hi, I'm implementing the server side of a file upload with resume option
part of a web app.

The client sends the last position so I have to append to the existing
file from that position.

Current code is:

@uploadfile = @params["uploadfile"]
content_range = @request.env['HTTP_CONTENT_RANGE']
filename = @uploadfile.original_filename
data = @uploadfile.read

# position to append from
pos = content_range[/\d+/].to_i

f = File.open("#{filename}", "a")
#f.pos = pos
f.seek(pos)
f.write(data)
f.close

I've tried opening the file with a and a+ modes. I've tried doing
rewing, setting pos (like the commented line) and seek, and none of them
works, the new data is always appended at the end of the file.

Any clues?

Thanks

--
Posted via http://www.ruby-....

3 Answers

Jamey Cribbs

11/27/2006 3:07:00 PM

0

Tulsi Das wrote:
> Hi, I'm implementing the server side of a file upload with resume option
> part of a web app.
>
> The client sends the last position so I have to append to the existing
> file from that position.
>
> Current code is:
>
> @uploadfile = @params["uploadfile"]
> content_range = @request.env['HTTP_CONTENT_RANGE']
> filename = @uploadfile.original_filename
> data = @uploadfile.read
>
> # position to append from
> pos = content_range[/\d+/].to_i
>
> f = File.open("#{filename}", "a")
> #f.pos = pos
> f.seek(pos)
> f.write(data)
> f.close
>
> I've tried opening the file with a and a+ modes. I've tried doing
> rewing, setting pos (like the commented line) and seek, and none of them
> works, the new data is always appended at the end of the file.
>

Open the file in r+ mode. This is read-write mode that starts at the
beginning of the file and allows you to seek to a specific position.

Jamey

Tulsi Das

11/27/2006 3:12:00 PM

0

Jamey Cribbs wrote:
> Open the file in r+ mode. This is read-write mode that starts at the
> beginning of the file and allows you to seek to a specific position.

I can't believe it was so easy, I've never even read the "r" section,
assuming it was read only... thanks a lot, it works great!

--
Posted via http://www.ruby-....

Austin Ziegler

11/27/2006 6:35:00 PM

0

On 11/27/06, Tulsi Das <tulsidas@gmail.com> wrote:
> Jamey Cribbs wrote:
> > Open the file in r+ mode. This is read-write mode that starts at the
> > beginning of the file and allows you to seek to a specific position.
> I can't believe it was so easy, I've never even read the "r" section,
> assuming it was read only... thanks a lot, it works great!

If you want this to be cross-platform, make sure you actually open it
"rb+" or your code will mysteriously fail on Windows.

-austin
--
Austin Ziegler * halostatue@gmail.com * http://www.halo...
* austin@halostatue.ca * http://www.halo...feed/
* austin@zieglers.ca