Piszę długo działające zadanie, które wielokrotnie pobierane z mongodb (używając mgo). Następnie zapisz go w pliku xlsx, używając this module. Następnie przeczytaj go ponownie, używając os.Open
, a następnie zapisz go na moim serwerze ftp.Jak podłączyć io.Reader i io.Writer?
Stor
funkcja zużywają moją pamięć tak bardzo, więc myślę, że powinien być sposób, aby nie zapisać plik, ale przekazać moje dane z Xlsx.Write do ftp.Store bezpośrednio. (Jeśli mogę przesyłać jednocześnie byłby idealny, ponieważ nie muszę trzymać wszystkie moje dokumenty w pamięci serwera przed wysłaniem ich do funkcji Stor)
Są to prototyp funkcji
func (f *File) Write(writer io.Writer) (err error)
xlsl
func (ftp *FTP) Stor(path string, r io.Reader) (err error)
ftp
io.Pipe() nie zwraca io.Writer i io.Reader, ale zamiast tego zwraca * PipeReader, * PipeWriter. Czy oni są tacy sami? –
@ MethuzKaewsai-kao: ['io.Reader'] (https://golang.org/pkg/io/#Reader) to interfejs,' * PipeReader' to konkretny typ implementujący interfejs 'io.Reader' . (To samo dotyczy pisarzy.) Tak, możesz użyć '* PipeReader' w dowolnym miejscu, które akceptuje' io.Reader'. – LeGEC