2017-07-14 110 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上傳的事實有關。有沒有解決這個問題? –