chciałem utworzyć plik zip i przesłać go bez zapisywania pliku tymczasowego na dysku tak:można użyć gulp do utworzenia pliku zip i załadowania bez użycia pliku tymczasowego?
gulp.task('zip-upload', function() {
return gulp.src('**/*', { cwd: 'out/', cwdbase: true })
.pipe(zip('file.zip'))
.pipe(request.put('https://myurl.com'));
});
Ale to zgłasza błąd:
http.js:853
throw new TypeError('first argument must be a string or Buffer');
TypeError: first argument must be a string or Buffer
at ClientRequest.OutgoingMessage.write (http.js:853:11)
at Request.write (.../node_modules/request/request.js:1315:25)
skończyło się go rozwiązać za pomocą dwóch zadania, ale nie jest to idealne:
gulp.task('zip', function() {
return gulp.src('**/*', { cwd: 'out/', cwdbase: true })
.pipe(zip('file.zip'))
.pipe(gulp.dest('./'));
});
gulp.task('upload', [ 'zip' ], function() {
fs.createReadStream('file.zip').pipe(request.put('https://myurl.com'));
});
Czy można zastosować coś takiego jak pierwsze podejście z łykiem?
zależności:
npm install gulp-zip request
dzięki.
Jestem po prostu ciekawy tego rozwiązania: czy naprawdę unika się IO na dysku i robi wszystko w pamięci (porąbane lub nie) lub po prostu przesyła ponownie dane podane na dysk? –
@JairoAndresVelascoRomero możesz sprawdzić źródło na https://github.com/jeromew/gulp-buffer/blob/master/index.js - to zbiera wszystkie porcje i tworzy bufor z tą zawartością. Nie widzę niczego, co wskazuje na dostęp do systemu plików. –