# Generare file testo su client

**URL:** <https://www.ruby-forum.com/t/generare-file-testo-su-client/75821>\
**Category:** IT\
**Created:** [November 13, 2006, 6:19pm UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821 "2006-11-13T18:19:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sij](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@sij](https://www.ruby-forum.com/u/sij)\
**Post date:** [November 13, 2006, 6:19pm UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821/1 "2006-11-13T18:19:31Z")

</div>

Con il seguente codice:

* * *

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.

---

<div class="post-metadata">

**Author:** ![sij](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@sij](https://www.ruby-forum.com/u/sij)\
**Post date:** [November 14, 2006, 12:21am UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821/2 "2006-11-14T00:21:09Z")

</div>

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
 ----------
```

---

<div class="post-metadata">

**Author:** ![sij](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@sij](https://www.ruby-forum.com/u/sij)\
**Post date:** [November 14, 2006, 6:21pm UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821/3 "2006-11-14T18:21:14Z")

</div>

On 11/13/06, Sij [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> begin # per ensure
> file.close
> 
> ```
> 
> 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?

Matteo

---

<div class="post-metadata">

**Author:** ![sij](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@sij](https://www.ruby-forum.com/u/sij)\
**Post date:** [November 13, 2006, 11:41pm UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821/4 "2006-11-13T23:41:02Z")

</div>

> 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

–  
Andrea R.

: : i’m a miner : : | [therubymine.com](http://therubymine.com)

---

<div class="post-metadata">

**Author:** ![sij](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b9e5f3/32.png) [@sij](https://www.ruby-forum.com/u/sij)\
**Post date:** [November 14, 2006, 8:02pm UTC](https://www.ruby-forum.com/t/generare-file-testo-su-client/75821/5 "2006-11-14T20:02:54Z")

</div>

Matteo V. wrote:

> 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.
