Piszę serwer WWW w podróży.http Request.FormFile: obsługi plików zip?
Na jednej ze stron użytkownik może przesłać plik.
Chciałbym móc obsługiwać pliki zip.
W pakiecie archive/zip
, widzę tylko dwie funkcje, które pozwalają mi czytać z archiwum zip:
func OpenReader(name string) (*ReadCloser, error)
func NewReader(r io.ReaderAt, size int64) (*Reader, error)
chciałabym uniknąć pisania i czytania z powrotem z dysku,
jeśli chcę użyć drugiej funkcji, muszę znać rozmiar przesłanego pliku przed wywołaniem funkcji.
Pytanie
będę podzielić na moje pytanie w dwóch częściach:
Jaki byłby idiomatyczne sposób odczytać rozpakowany zawartość pliku zip przesłanego za pośrednictwem standardowego formularza
multipart/form-data
html?Jak mogę uzyskać rzeczywisty rozmiar pliku przesłanego przez formularz 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) }
czy rozwiązanie nagłówka mime z mojej odpowiedzi nie działa? Jeśli brakuje ci długości treści, to rozwiązanie jest bardzo dobre, ponieważ nie sądzę, że istnieje sposób na przeniesienie go do bufora bez przynajmniej jednej kopii. – JimB