Не эксперт, но я попробовал и получил пример, работающий на вас. Вы не предоставили достаточно информации в своем вопросе, поэтому я собираюсь начать с нуля.
Я следил за официальнымрепо и предоставленными образцами, и мне пришлось внести некоторые изменения, чтобы получить куски файлов, сохраненные в определенном каталоге, а затем больше настроек, чтобы сшить эти куски обратно вместе и больше настроить, чтобы удалить ненужные куски впоследствии. Очевидно, что все эти хитрости - это подсказки, представленные в коде, и в других местах, которые я просматривал. Примерно flow.js также использует аналогичный механизм (не совсем уверен).
Мне в основном нужно было изменить app.js
в одном из образцов, чтобы иметь возможность загружать файлы из браузера, а затем сохранять их локально.
- Pass местоположения папка возобновляемое, где файл глыба должна быть добавлена
- Обеспечить необходимые условия и команды, так что, когда глыбы будут загружены, вы создаете поток записи, а затем использовать возобновляемые сшить куски вместе и сохранить их как оригинальный файл.
- Наконец удалить все куски
Инструкции использовать gist получить работу экспресс-приложение (вы можете оформить официальный образец GitHub и внести изменения или вы можете следовать ниже инструкции):
- Создать каталог
- Создание app.js, resumable.js и возобновляемую-Node.js с сутью в каталоге
- копировать/вставить
package.json
и сделать НПМ установки, чтобы получить модули (или вручную npm install
эти express
, path
, fs
, connect-multiparty
)
- создать
uploads
каталог в главном каталоге приложения и убедитесь, что он доступен для записи
- Copy/мимо
public
директории из here, который содержит icons
в виде .png и style.css
и index.html
для загрузки
- Изменить значение
target
в строке 49
или 50
с индексом.html в общедоступном каталоге, который вы только что скопировали на адрес вашего сервера в моем случае http://localhost:3000/upload
- Вы можете настроить размер куска, количество одновременных загрузок пакетов и т. д. в index.html, но я оставил их по умолчанию (на самом деле, я сменил куски от 3 до 4)
- Выполнено все, что вышло выше, тогда вы хорошо пойдете.
- Запустите приложение т.е. nodemon app.js или узел app.js
- Перейдите на ваш адрес сервера или http://localhost:3000/upload, и вы увидите index.html вынесенное, как показано ниже:
бревно консоли ниже (обратите внимание на конец. - куски удалены)
Наконец, у меня есть image2.jpg
в каталоге uploads.
TL; DR
Вам необходимы следующие твики в app.js и файл index.html, чтобы иметь возможность загружать и сохранять загруженный файл с помощью Resumable.js.
index.html щипнули изменить целевое значение, чтобы указать его URL-адрес сервера в моем случае http://localhost:3000/upload
var r = new Resumable({
target:'http://localhost:3000/upload',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1
});
app.js щипнули отправить resumable
директорию, где сохраните файл (вверху всего).
var resumable = require('./resumable-node.js')(__dirname + "/uploads");
Я также переделаны app.js изменить содержание app.post('/uploads',...)
см gist.
// Handle uploads through Resumable.js
app.post('/upload', function(req, res){
resumable.post(req, function(status, filename, original_filename, identifier){
if (status === 'done') {
var stream = fs.createWriteStream('./uploads/' + filename);
//stich the chunks
resumable.write(identifier, stream);
stream.on('data', function(data){});
stream.on('end', function(){});
//delete chunks
resumable.clean(identifier);
}
res.send(status, {
// NOTE: Uncomment this funciton to enable cross-domain request.
//'Access-Control-Allow-Origin': '*'
});
});
});
И, наконец, последний подстройка к app.js находится на последнем обработчика маршрута, следующий файл
s.createReadStream("./resumable.js").pipe(res);
Я переместил файл resumable.js в том же каталоге, что и другие, так Мне нужно было настроить изменение его местоположения, чтобы createReadStream нашел его.
Любые примеры github были бы удивительными .. – Nodedeveloper101
Хорошо, сам файл находится в 'req.files.file' ... Итак, у меня есть переменная javascript, которая является файлом .. var file = req.files.file; .... как сохранить эту переменную в виде файла в определенном каталоге на моем сервере? – Nodedeveloper101
Я понял, как писать .txt-файлы на сервер, используя 'fs'. Поэтому я могу писать файлы на сервер. И я могу console.log() данные о файле. Но не могу понять, какой объект мне нужно передать в fs.writeFile (имя файла, файл, обратный вызов), который на самом деле является файлом ... прямо сейчас он просто сохраняет [объект объекта] – Nodedeveloper101