从nodejs服务器向slimframework发送文件

时间:2014-04-21 14:10:22

标签: php node.js file-upload request

我想从我的服务器向另一台服务器上的其他api发送一个文件,但由于某种原因它没有得到我发送的数据..

使用slim框架休息api php:

    $app->post
(
    '/api/upload',
    function () use ($app)
    {
        $logs = '/home/logs';
        //error_log(print_r($_FILES, 1), 3, $logs . '/export16.log');
        try
        {
            $data = file_get_contents('php://input'); // EMPTY!!!!
            error_log(print_r(count($data), 1), 3, $logs . '/export16.log');
        }
        catch(Exception $e)
        {
            error_log(print_r($data, 1), 3, $logs . '/export16err.log');
        }
    }
);

使用请求模块的nodejs:

        fs.createReadStream('myfile.zip')
    .pipe
    (
        request.post
        (
            UPLOAD_URL,

            function (error, response, body)
            {
                //console.log(response);
                if (!error && response.statusCode == 200)
                {
                    //console.log(repons);
                }
            }
        )
    );

也尝试使用此代码:使用文档

中所述的表单数据模块
    var r = request.post(UPLOAD_URL, function optionalCallback (err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
  console.log(httpResponse);
  console.log('Upload successful!  Server responded with:', body);
})
var form = r.form();

form.append('my_file', fs.createReadStream('file.zip') );

他们都不工作,我的php中没有数据:输入, 我看到标题内容类型:设置了应用程序/ zip,但没有别的,可能缺少某些东西?

     _header: 'POST /api/upload HTTP/1.1\r\nhost: xyz.com\r\ncontent-type: a
pplication/zip\r\nConnection: keep-alive\r\nTransfer-Encoding: chunked\r\n\r\n',

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

原来我必须设置内容长度:)