javascript - FormData 中的 Nodejs 额外数据
问题描述
我正在向 Sharepoint 发送带有文件的 http 请求。某些文件类型(例如 png 或其他图像)已损坏且无法读取。在查看那些时,我会在头部看到额外的对象数据,例如
----------------------------826320949470377643449533
Content-Disposition: form-data; name="file"; filename="mypdf.pdf"
Content-Type: application/pdf
在底部:
----------------------------826320949470377643449533--
有没有办法防止这种情况?我正在使用的代码如下所示:
const contentType = mime.contentType(fileName);
const data = new FormData();
data.append('file',fs.createReadStream(path));
const fileSize = req.headers['content-length']
fs.promises.file(file)).size
const fileSizeLessByte = fileSize-1;
const contentRange = 'bytes 0-'+fileSizeLessByte+'/'+fileSize;
const contentLength = fileSize;
var config = {
method: 'put',
url: uploadUrl,
headers: {
'Content-Range': contentRange,
'Content-Length': contentLength,
'Content-Type': 'multipart/form-data'
},
data : data
};
解决方案
我最终能够通过使用 readFileSync 而不是 FormData 来完成这项工作,而不是像 O. Jones 建议的那样使用多部分内容类型:
const contentType = mime.contentType(fileName);
const fileStream = fs.readFileSync(path);
const fileSize = Buffer.byteLength(fileStream);
const fileSizeLessByte = fileSize-1
const contentRange = 'bytes 0-'+fileSizeLessByte+'/'+fileSize;
const contentLength = fileSize;
const config = {
method: 'put',
url: uploadUrl,
headers: {
'Content-Type': contentType,
'Content-Range': contentRange,
'Content-Length': contentLength
},
data: fileStream
};
推荐阅读
- mongoose - 无法更新行 mongoose
- r - 在 R 中生成具有随机选择的特征的数据集列表
- android - 活动视图显示在片段上
- png - Ghostscript -- 将 PS 转换为 PNG、旋转和缩放
- linux - 如何在 libcurl 中启用 sslv3 请求
- apache-camel - 如何使用来自 Topic ActiveMQ Artemis 的消息
- go - Golang 代码中的未知错误:第二遍中的插入排序?
- c++ - C++:为什么函数对象基类、适配器和绑定器被弃用(C++11)和移除(C++17)?
- c - MISRAC:2012:规则 4.1 八进制和十六进制转义序列应终止
- java - 会话 ID 为空。调用 quit() 后使用 WebDriver?