Javascript Resubable.js可以';t将文件保存到服务器端目录
我在Node.js-express应用程序中使用resubable.js。我可以知道文件传输是成功的,因为我可以看到console.log(req.body)和下面的内容Javascript Resubable.js可以';t将文件保存到服务器端目录,javascript,node.js,file,save,transfer,Javascript,Node.js,File,Save,Transfer,我在Node.js-express应用程序中使用resubable.js。我可以知道文件传输是成功的,因为我可以看到console.log(req.body)和下面的内容 { resumableChunkNumber: '77', resumableChunkSize: '1048576', resumableCurrentChunkSize: '1064195', resumableTotalSize: '80755971', resumableType: '', resu
{ resumableChunkNumber: '77',
resumableChunkSize: '1048576',
resumableCurrentChunkSize: '1064195',
resumableTotalSize: '80755971',
resumableType: '',
resumableIdentifier: '80755971-humanfastq',
resumableFilename: 'human.fastq',
resumableRelativePath: 'human.fastq',
resumableTotalChunks: '77' }
文档对这一点之后该做什么相当模糊。我需要将此文件保存到服务器上的目录中。任何关于如何实现这一点的帮助都将不胜感激。谢谢 我没有使用Resumable.js,而是使用类似的东西,下面是我在Nodejs/express服务器中的操作方法。您还可以在这里查看更多的服务器代码:但是请记住,它并不完整,而且是实验性的。下面的代码只是一个简单的示例
import move from '../../libraries/fsMove.js';
export function create(req, res) {
var file = req.files.file;
console.log(file.name);
console.log(file.type);
console.log(file.path);
console.log(__dirname);
move(file.path, __dirname + '/../../uploads/worlds/' + file.originalFilename, function(err){
if (err) {
console.log(err);
handleError(res)(err);
return;
}
World.createAsync(req.body)
.then(responseWithResult(res, 201))
.catch(handleError(res));
});
}
// fsMove.js
// http://stackoverflow.com/questions/8579055/how-i-move-files-on-node-js/29105404#29105404
var fs = require('fs');
module.exports = function move (oldPath, newPath, callback) {
fs.rename(oldPath, newPath, function (err) {
if (err) {
if (err.code === 'EXDEV') {
copy();
} else {
callback(err);
}
return;
}
callback();
});
function copy () {
var readStream = fs.createReadStream(oldPath);
var writeStream = fs.createWriteStream(newPath);
readStream.on('error', callback);
writeStream.on('error', callback);
readStream.on('close', function () {
fs.unlink(oldPath, callback);
});
readStream.pipe(writeStream);
}
};
不是专家,但我确实尝试了一下,得到了一个对你有用的例子。你在你的问题中没有提供足够的信息,所以我将从头开始 我遵循官方回购协议和提供的样本,我必须做一些调整,以便将文件块保存在特定目录中,然后再进行更多调整,将这些块重新缝合在一起,然后再进行更多调整,删除不必要的块。显然,所有这些调整都是代码中提供的提示,以及我浏览过的其他地方。Appearnly也使用了类似的机制(不完全确定) 我基本上需要更改其中一个示例中的
app.js
,以便能够从浏览器上载文件,然后将其保存在本地
package.json
并进行npm安装以获取模块(或手动npm安装
这些express
,路径
,fs
,连接多方
)uploads
目录,并确保其可写public
目录,该目录包含.png文件形式的图标和style.css
和index.html
,用于上传
49
或50
行中的target
值http://localhost:3000/upload
image2.jpg
TL;DR
您需要对app.js和index.html文件进行以下调整,才能通过resubable.js上传和保存上传的文件
在我的例子中,index.html被调整为将目标值指向服务器url
app.js已经过调整,可以发送resubable
一个保存文件的目录(最上面)
我还调整了app.js以更改app.post('/uploads',…)see的内容
最后对app.js的最后一个调整是在最后一个路由处理程序中,如下文件
s.createReadStream("./resumable.js").pipe(res);
我将resubable.js文件移动到与其他文件相同的目录中,因此我需要调整并更改其位置,以便createReadStream能够找到它 任何github示例都会让人惊讶..好的,文件本身位于'req.files.file'中。。。所以我有一个javascript变量,它是一个文件。。var file=req.files.file。。。。如何将此变量作为文件保存到服务器上的特定目录中?我知道如何使用“fs”将.txt文件写入服务器。这样我就可以将文件写入服务器。我可以控制台有关该文件的.log()数据。但无法确定必须将什么对象传递到fs.writeFile(文件名、文件、回调)中,而该文件实际上是。。。现在它只保存[对象]
var resumable = require('./resumable-node.js')(__dirname + "/uploads");
// 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': '*'
});
});
});
s.createReadStream("./resumable.js").pipe(res);