2017-07-14 132 views
0

我有一张图片保存在我的节点服务器上。我需要将此图像发送到使用PHP编写的API。 api接受来自php的$ _FILES的文件。将图片从节点js服务器上传到PHP服务器

如何将文件从节点发送到PHP API,以便它可以从$ _FILES读取。

我使用NPM 请求包发送请求

+1

该文档有一个示例:[发送表单](https://www.npmjs.com/package/request#forms) – AlexM

回答

0

你可以尝试像下面也许是:

var request = require('request'); 
var fs = require('fs'); 

var data = { 
    file: fs.createReadStream('/path/to/my/image.jpg') 
}; 
request.post({ url:'http://example.com/upload.php', formData:data }, function callback(err, response, body) { 
    if(err) { 
     return console.error('Failed to upload:', err); 
    } 
    console.log('Upload successful!'); 
}); 

或者,如果要创建一个页面,允许用户选择照片上传

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 

    res.write('<form action="http://example.com/upload.php" method="post" enctype="multipart/form-data">'); 
    res.write('<input type="file" name="usrfile" />'); 
    res.write('<input type="submit" />'); 
    res.write('</form>'); 

    return res.end(); 
}).listen(8088); 

在PHP服务器来处理,你可以做到这一点上传:

<?php 
    /* node.js upload target ~ "upload.php" */ 
    if(isset($_FILES)){ 

     /* change path to suit environment */ 
     $dir='c:/temp/fileuploads/1/'; 

     $obj=(object)$_FILES['file']; 
     $name=$obj->name; 
     $tmp=$obj->tmp_name; 

     $result = move_uploaded_file($tmp, $dir.$name); 
     echo $result ? 'File '.$name.' ws moved to '.$dir : 'Error: Failed to save '.$name; 
    } 
?> 
+0

谢谢......这部分工作为我。图像被捕获$ _FILES。但我的代码失败,因为move_uploaded_file总是返回false。没有错误。我认为这与文件没有被php上传的事实有关。有没有解决这个问题? –