gpt4 book ai didi

javascript - Node.js 上传 block 并将其保存到文件中

转载 作者:行者123 更新时间:2023-12-03 02:13:54 25 4
gpt4 key购买 nike

尝试将文件上传到服务器并保存,这是漫长的一天,但没有成功。例如,我想将图像文件上传到服务器,我设法使用pulpload和HTTP模块来完成它。我确实收到了该 block ,并且可以将其保存到文件中,但该文件未打开。这是我的代码:

**server side:**
var http = require('http');
http.createServer(function (req, res) {

req.on('data', function(chunk) {

fs.appendFileSync(__dirname +'/file.jpg' , chunk, function (err) {

})
})

}).listen(8081);

在我收到所有 block 后,该文件包含一些数据,我不确定该数据属于 jpg 文件:

------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="name"

3fd639c096a4196a8d9bfbf2f568a87fc-f0xd-w1020_h770_q80.jpg
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="chunk"

0
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="chunks"

1
------WebKitFormBoundaryP6RBw3nrYvsnhYhw
Content-Disposition: form-data; name="fileupload"; filename="blob"
Content-Type: application/octet-stream

ÿØÿà JFIF

当所有 block 都保存后,我无法打开文件,我尝试了很多教程和模块但没有成功。我的问题是,可以吗?我确实设法用 php、java 做到了这一点,甚至用 Coldfusion 也是小菜一碟,但用 Node.js 那就是一场噩梦。我用谷歌搜索了一遍,但大多数教程都已经过时并且不起作用。我不想再花时间在这上面,我希望我能在这里得到一些帮助或正确的方向来解决它。提前致谢

最佳答案

在多部分/表单数据请求中,表单字段使用边界分隔。需要解析正文以获取字段或数据。有许多模块可用于此,“多方”就是其中之一。也许,这应该让你继续前进:

var http = require('http');
var fs = require('fs');
var multiparty = require('multiparty');
http.createServer(function (req, res) {
if (req.method === 'POST') {
var form = new multiparty.Form();
form.parse(req, function (err, fields, files) {
/* assuming <input type="file" name="profile" /> is used in upload form */
var profileImageFileArray = files.profile;
if (profileImageFileArray && profileImageFileArray.length > 0) {
var profileImageFile = profileImageFileArray[0];
var tempFilePath = profileImageFile.path;
var newFilePath = __dirname + '/uploads/' + profileImageFile.originalFilename;
fs.readFile(tempFilePath, (err, data) => {
fs.writeFile(newFilePath, data, (err) => {
/* handle response according to success or error */
});
});
}
});
}
else {
var html = fs.readFileSync('index.html');
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(html);
}}).listen(9090);

可以从传递的“fields”参数中提取非二进制字段,类似于文件。

关于javascript - Node.js 上传 block 并将其保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49442163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com