Следующий код используется для извлечения файла .zip
из нашего веб-приложения. Файл создается путем безопасного закрытия другого приложения, затем с помощью zipping, наконец, отправляя его для загрузки.Обратный вызов для рекурсивной функции
var dl = function() {
request({
method: 'GET',
uri: 'some_url',
headers: {
'User-Agent': 'Scripted-Download'
},
encoding: null,
jar: true
}, function(err, res, body) {
if (err) throw(err)
if (res.headers['content-type'] === 'application/zip;charset=utf-8') {
process.stdout.write('\rDownloading file ..')
var id = uuid.v4()
, file = path.resolve(__dirname, '../../' + id + '.zip')
fs.writeFile(file, body, function(err) {
if (err) throw(err)
process.stdout.write('\rFile downloaded ' + id + '.zip')
process.exit(0)
})
} else {
process.stdout.write('\rAwaiting file ..')
setTimeout(dl(), 30 * 1000)
}
})
}
Это работает должным образом. Однако мне нужно использовать это из другого скрипта. Таким образом, приведенный выше код возвращает id
загруженного файла, затем из другого сценария я могу извлечь .zip
и поместить извлеченные файлы в каталог с тем же id
. Эти файлы затем будут доступны для загрузки.
EDIT По существу я должен выполнить этот сценарий, извлечь содержимое, когда он загружен затем загрузить пользовательский интерфейс с res.render()
, когда предыдущие два шага завершены. Это необходимо сделать с помощью id
, чтобы два пользователя не создавали конфликтующие файлы.
В чем вы испытываете трудности? Извлечь в узел в папку, подверженную «http»? – Pogrindis
Мне нужно знать, что файл был загружен. В противном случае пользователь будет пытаться загрузить файл, который не существует, который будет производить 404. – MindVox
Пожалуйста, см. Мой ** EDIT ** – MindVox