Node Js FS 不写入整个文件
Node Js FS not writing whole file
我想将文件从客户端上传到服务器,然后将它们存储在与上传该特定文件的用户对应的文件夹中!代码好像没问题,但是问题好像是fs相关的! Fs 只传输文件的 15 个字节。事实上,到目前为止,它只传输我尝试过的每种文件类型(图像和视频)的 15 个字节!到目前为止,这是我的代码,你能帮帮我吗?谢谢!
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/upload', multipartMiddleware, function(req, res){
var file = req.files.thumbnail; // that's what I've named the html input element
var stream = fs.createWriteStream(file.path);
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, stream);
res.redirect('/');
});
这样试试:
app.post('/upload', multipartMiddleware, function(req, res){
var file = req.files.thumbnail; // that's what I've named the html input element
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, file, function(err) {
if(err) {
res.redirect('error_page');
return console.log(err);
}
console.log("The file was saved!");
res.redirect('/');
});
});
问题出在这些行中:
var stream = fs.createWriteStream(file.path);
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, stream);
stream,不是'file.path'的文件内容。相反,它是一个流,您可以通过它写入 'file.path'.
例如:
var stream = fs.createWriteStream(file.path);
stream.write('some content');
stream.end();
当您使用它通过 fs.writeFile 写入文件时,它的对象表示就是写入的内容,即“[Object,Object]”(15 字节)。
您应该做的是从其他文件中读取内容,并将内容保存在字符串或缓冲区中,而不是流中:
var stream = fs.readFileSync(file.path);
然后写入目标文件。当然,如果您使用文件写入的异步模型,请记住仅在完成时重定向。顺便有个writeFileSync()API,通过它也可以同步写入
希望对您有所帮助。
我想将文件从客户端上传到服务器,然后将它们存储在与上传该特定文件的用户对应的文件夹中!代码好像没问题,但是问题好像是fs相关的! Fs 只传输文件的 15 个字节。事实上,到目前为止,它只传输我尝试过的每种文件类型(图像和视频)的 15 个字节!到目前为止,这是我的代码,你能帮帮我吗?谢谢!
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/upload', multipartMiddleware, function(req, res){
var file = req.files.thumbnail; // that's what I've named the html input element
var stream = fs.createWriteStream(file.path);
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, stream);
res.redirect('/');
});
这样试试:
app.post('/upload', multipartMiddleware, function(req, res){
var file = req.files.thumbnail; // that's what I've named the html input element
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, file, function(err) {
if(err) {
res.redirect('error_page');
return console.log(err);
}
console.log("The file was saved!");
res.redirect('/');
});
});
问题出在这些行中:
var stream = fs.createWriteStream(file.path);
fs.writeFile('./users/'+req.user._id+'/'+file.originalFilename, stream);
stream,不是'file.path'的文件内容。相反,它是一个流,您可以通过它写入 'file.path'.
例如:
var stream = fs.createWriteStream(file.path);
stream.write('some content');
stream.end();
当您使用它通过 fs.writeFile 写入文件时,它的对象表示就是写入的内容,即“[Object,Object]”(15 字节)。
您应该做的是从其他文件中读取内容,并将内容保存在字符串或缓冲区中,而不是流中:
var stream = fs.readFileSync(file.path);
然后写入目标文件。当然,如果您使用文件写入的异步模型,请记住仅在完成时重定向。顺便有个writeFileSync()API,通过它也可以同步写入
希望对您有所帮助。