首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FormData中的Nodejs额外数据

FormData中的Nodejs额外数据
EN

Stack Overflow用户
提问于 2021-05-05 19:31:40
回答 1查看 32关注 0票数 0

我正在向Sharepoint发送一个包含文件的http请求。某些文件类型(如png或其他图像)已损坏且无法读取。当看这些时,我在头部看到额外的对象数据,例如

代码语言:javascript
运行
复制
----------------------------826320949470377643449533
Content-Disposition: form-data; name="file"; filename="mypdf.pdf"
Content-Type: application/pdf

在底部:

代码语言:javascript
运行
复制
----------------------------826320949470377643449533--

有没有办法防止这种情况发生?我使用的代码如下所示:

代码语言:javascript
运行
复制
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
  };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-06 18:24:16

我最终能够通过使用readFileSync而不是FormData,而不是像O. Jones建议的那样使用多部分内容类型来实现这一点:

代码语言:javascript
运行
复制
 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
    };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67400440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档