Sto scrivendo un server web in go.http Request.FormFile: gestisce i file zip?
Su una delle pagine, l'utente può caricare un file.
Mi piacerebbe essere in grado di gestire i file zip.
Nel pacchetto archive/zip
, vedo solo due funzioni che mi permettono di leggere da un archivio zip:
func OpenReader(name string) (*ReadCloser, error)
func NewReader(r io.ReaderAt, size int64) (*Reader, error)
vorrei evitare di scrivere e leggere di nuovo dal disco,
se si desidera utilizzare la seconda funzione, è necessario conoscere la dimensione del file caricato prima di chiamare la funzione.
Domanda
Ho diviso la mia domanda in due parti:
Quale sarebbe il modo idiomatico per leggere il contenuto decompresso di un file zip caricato attraverso una forma
multipart/form-data
standard HTML?Come posso ottenere la dimensione effettiva di un file caricato tramite un modulo html?
func(req *http.Request) { f, h, err := req.FormFile("fileTag") if err != nil { panic(err) } var fileSize int = ?? unzipper, err := zip.NewReader(f, fileSize) }
la soluzione mime-header della mia risposta non funziona? Se ti manca una lunghezza del contenuto, questa soluzione è in realtà molto buona, dal momento che non penso che ci sia un modo per farlo entrare in un Buffer senza almeno un'altra copia. – JimB