[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Best way for sending file to user

Mark Mr

2/7/2008 8:45:00 PM

HI, I'm currently using the FasterCSV library to pull a bunch of data
from my database and send a .csv file to the user. Currently i start off
with

FasterCSV.open("app/models/" + @assessment.assessment + ".csv", "w") do
|csv|

write all the info to it, then i use

send_file ('app/models/' + @assessment.assessment + '.csv')

to send it. It saves the csv file on the server and then sends that file
to the user. Is there any way to send the csv file without saving it to
the server? Or is there a command i can use to delete the file after it
sends? I couldnt quite find any answers to what I'm trying to do yet.
Thanks alot if anyone has input :)
--
Posted via http://www.ruby-....

3 Answers

James Gray

2/7/2008 9:16:00 PM

0

On Feb 7, 2008, at 2:44 PM, Mark Mr wrote:

> HI, I'm currently using the FasterCSV library to pull a bunch of data
> from my database and send a .csv file to the user. Currently i start
> off
> with
>
> FasterCSV.open("app/models/" + @assessment.assessment + ".csv", "w")
> do
> |csv|
>
> write all the info to it, then i use
>
> send_file ('app/models/' + @assessment.assessment + '.csv')
>
> to send it. It saves the csv file on the server and then sends that
> file
> to the user. Is there any way to send the csv file without saving it
> to
> the server?

Yes, if you can easily hold the data in memory. You could use
FasterCSV.generate() to get the data in a String. The use send_data()
instead of send_file() to dump it to the client.

> Or is there a command i can use to delete the file after it
> sends?

Sure, use the standard Tempfile library to allocate a file, write to
it, and then feed it to send_file().

James Edward Gray II


Jeremy Hinegardner

2/7/2008 9:32:00 PM

0

On Fri, Feb 08, 2008 at 05:44:51AM +0900, Mark Mr wrote:
> HI, I'm currently using the FasterCSV library to pull a bunch of data
> from my database and send a .csv file to the user. Currently i start off
> with
>
> FasterCSV.open("app/models/" + @assessment.assessment + ".csv", "w") do
> |csv|
>
> write all the info to it, then i use
>
> send_file ('app/models/' + @assessment.assessment + '.csv')
>
> to send it. It saves the csv file on the server and then sends that file
> to the user. Is there any way to send the csv file without saving it to
> the server? Or is there a command i can use to delete the file after it
> sends? I couldnt quite find any answers to what I'm trying to do yet.
> Thanks alot if anyone has input :)

Use FasterCSV.new instead.

csv_buffer = StringIO.new
FasterCSV.new(csv_buffer) do |fcsv|
fcsv << row
end

send_buffer_to_user(csv_buffer.string)

enjoy,

-jeremy

--
========================================================================
Jeremy Hinegardner jeremy@hinegardner.org


Mark Mr

2/8/2008 4:09:00 PM

0

James Gray wrote:

> Yes, if you can easily hold the data in memory. You could use
> FasterCSV.generate() to get the data in a String. The use send_data()
> instead of send_file() to dump it to the client.
>


Thanks, I used the generate option to get it to work, never used
send_data before so thanks for letting me know about that one :)
--
Posted via http://www.ruby-....