【问题标题】:make an HTTP request with an application/octet-stream content type - node js使用 application/octet-stream 内容类型发出 HTTP 请求 - 节点 js
【发布时间】:2019-08-01 23:58:06
【问题描述】:

目前我正在使用 npm 模块 request 上传具有 application/octet-stream 内容类型的文件。问题是我无法取回响应正文。这是由于一个已知的错误而发生的:https://github.com/request/request/issues/3108

您能否提供一种将文件上传到具有应用程序/八位字节流内容类型的 API 的替代方法?

【问题讨论】:

    标签: node.js file-upload


    【解决方案1】:

    您是否尝试将文件加载到缓冲区而不是流?我很欣赏在许多情况下流是可取的,但通常只是加载到内存中是可以接受的。我用这种方法没有问题:

    const imageBuffer = fs.readFileSync(fileName); // Set filename here..
    
    const options = {
        uri: url, /* Set url here. */
        body: imageBuffer,
        headers: {
            'Content-Type': 'application/octet-stream'
        }
    };
    
    
    request.post(options, (error, response, body) => {
    if (error) {
        console.log('Error: ', error);
        return;
    }
    

    使用流做同样的事情:

    const options = {
        uri: url, /* Set url here. */
        body: fs.createReadStream(fileName),
        headers: {
            'Content-Type': 'application/octet-stream'
        }
    };
    
    request.post(options, (error, response, body) => {
    if (error) {
        console.log('Error: ', error);
        return;
    }
    ..
    

    【讨论】:

    • 谢谢,这个解决方案有效!无论如何,我认为最好用流来做,因为视频将使用这个程序上传,而且大小可能非常大。
    • 如果你正在处理大文件,你应该使用流!
    • 你能举例说明如何用流做同样的事情吗?
    • @Keven,我已经更新了一个使用流的示例。
    猜你喜欢
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 2015-09-07
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多