def genera_file @file_items = FileItem.find(:first, :conditions => “user_id =
‘#{session[:user_id]}’”)
mese = @file_items.riferimento @file_items = FileItem.find(:all, :conditions => “user_id =
‘#{session[:user_id]}’”)
file =
File.new(“c:\file_#{mese}utente#{session[:user_id]}.txt”,“w”)
begin # per ensure
for file_item in @file_items
file.write file_item.tipologia
file.write file_item.regione
file.write file_item.riferimento
file.write file_item.identificativo
file.write file_item.istat_comune
file.write file_item.codice_struttura
file.write “\n”
end #for
ensure
file.close
end #ensure
flash[:notice] = ‘File generato.’
redirect_to :action => ‘list’
end
creo un file testo sul server
che poi provvedo a mandare tramite
send_file(“c:\file_c_#{mese}utente#{session[:user_id]}.txt”,
:disposition => ‘attachment’)
La domanda è la seguente:
Come posso generare il file direttamente sul client evitando di salvarlo
prima sul server?
E’ fattibile ?
Grazie in anticipo.
Dai un’occhiata a FasterCSV anche. Fa tutto quello che fa CSV, ma è
più lesto e fa anche altre robe.
Andrea R. wrote:
********************
creo un file testo sul server
che poi provvedo a mandare tramite
**********************************
send_file("c:\\file_c_#{mese}_utente_#{session[:user_id]}.txt",
:disposition => 'attachment')
La domanda è la seguente:
Come posso generare il file direttamente sul client evitando di
salvarlo
prima sul server?
E' fattibile ?
Grazie in anticipo.
Ti passo un codice di esempio che faceva l'esportazione in cvs su
di alcuni
dati.
Mi faceva salvare il file direttamente sul client, quindi dovrebbe
essere
quello che cercavi.
----------
def csv_export
@invoices = params[:invoice]
report = StringIO.new
CSV::Writer.generate(report, ';') do |csv|
@invoices.each do |invoice|
csv << [invoice.type_invoice.descrizione]
end
end
report.rewind
send_data(report.read,
:type => 'text/csv; charset=iso-8859-1; header=present',
:filename => 'report.csv')
end
----------
La domanda è la seguente:
Come posso generare il file direttamente sul client evitando di salvarlo
prima sul server?
E’ fattibile ?
Grazie in anticipo.
Se il client è un web browser, non c’è maniera di generare un file
sulla macchina del client, a meno di usare porcherie tipo ActiveX o
applet firmate. Questo perché Javascript sul client è
intenzionalmente limitato. Era questa la domanda?
Ti passo un codice di esempio che faceva l’esportazione in cvs su di
alcuni
dati.
Mi faceva salvare il file direttamente sul client, quindi dovrebbe
essere
quello che cercavi.
def csv_export @invoices = params[:invoice]
report = StringIO.new
CSV::Writer.generate(report, ‘;’) do |csv| @invoices.each do |invoice|
csv << [invoice.type_invoice.descrizione]
end
end
Se il client � un web browser, non c’� maniera di generare un file
sulla macchina del client, a meno di usare porcherie tipo ActiveX o
applet firmate. Questo perch� Javascript sul client �
intenzionalmente limitato. Era questa la domanda?
Matteo
Ciao
Era questa la domanda?
Si!
un web browser
Si. IE oppure Firefox
Il problema nello specifico è questo:
Il database è unico e vi si collegano vari utenti.
Tutte le tabelle, tranne quelle comuni a tutti, hanno un campo user per
contrassegnare i record di appartenenza all’utente .
Ogni utente periodicamente deve generare un file testo di rendiconto
delle loro
operazioni, la procedura salva questo file sul server.
Con una successiva operazione l’utente esegue il dw del file
send_file(“c:\file_c_#{mese}utente#{session[:user_id]}.txt”,
:disposition => ‘attachment’)
per consegnare lo stesso file all’ufficio competente.
Per differenziare i file (evitando sovrascritture) li nomino nel
seguente modo:
File.new(“c:\file_#{mese}utente#{session[:user_id]}.txt”,“w”)
Se avessi la possibilità di generarlo sul client eviterei quanto sopra.
Grazie a tutti per le risposte.
Saluti
Gino.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.