【问题标题】:C++ : upload single file with http requestC ++:使用http请求上传单个文件
【发布时间】:2016-07-11 21:32:18
【问题描述】:

我在我的 C++ 项目中使用了一个名为 HappyHTTP 的简单库(链接到库:https://github.com/Zintinio/HappyHTTP

我想向我的 nodejs 服务器发送一个文件。

我的javascript代码如下:

    var multer  = require('multer');
    var upload = multer({ dest: 'uploads/' });
    router.post('/dicomPost',upload.single('dicom'),function (req,res) {


    res.send(200);

})

这是我的 C++ 代码:

             happyhttp::Connection conn( "127.0.0.1", 3000 );
             conn.setcallbacks( OnBegin, OnData, OnComplete, 0 );
             conn.putrequest( "POST", "/dicomPost" );
             conn.putheader( "Connection", "close" );
             conn.putheader( "Content-Length", l);
             conn.putheader( "Content-type", "multipart/form-data" );
             conn.putheader("Content-Disposition","name=dicom; filename=test.txt");
             conn.putheader( "Accept", "text/plain" );
             conn.endheaders();

             while( conn.outstanding() )
                 conn.pump();

从我的 C++ 端,我可以发送正文数据,但是当涉及到文件时,我收到 500 内部服务器错误),请任何人都可以查看上面的 github 链接,看看为什么我的代码不是在职的。我不想用libcurl,因为它很大,我只想用一个lightwheight库作为HappyHttp来发帖。

提前谢谢你。

【问题讨论】:

  • 我还没有查看库示例,但令我震惊的是,您并没有告诉库您要上传哪个文件。当然,您要求库告诉 http 客户端文件的名称,但如果库正在解析包含文件名的字符串、打开文件然后提供它,我会感到惊讶。我希望在 while 循环之前,在conn.endheaders() 之后有更多代码,事实上,在查看时,您需要自己读取和缓冲文件,然后再使用send 方法发送数据。它在文档中:

标签: javascript c++ node.js http libcurl


【解决方案1】:

问题出在服务器端,所以检查服务器日志,看看是否有任何线索。我的猜测是上传文件夹的权限问题会阻止您的 javascript 在那里写入任何文件。

【讨论】:

    猜你喜欢
    • 2013-02-02
    • 2020-05-05
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    相关资源
    最近更新 更多