2016-06-22 77 views
0

我想要做的是保存從另一個服務器通過CURL發送的二進制文件。接收通過CURL發送的二進制文件

的PHP上傳我的是:

<?php 
define("UPLOAD_DIR", "/tmp/"); 

if (!empty($_FILES["myFile"])) { 
    $myFile = $_FILES["myFile"]; 

    if ($myFile["error"] !== UPLOAD_ERR_OK) { 
     echo "<p>An error occurred.</p>"; 
     exit; 
    } 

    // ensure a safe filename 
    $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

    // don't overwrite an existing file 
    $i = 0; 
    $parts = pathinfo($name); 
    while (file_exists(UPLOAD_DIR . $name)) { 
     $i++; 
     $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
    } 

    // preserve file from temporary directory 
    $success = move_uploaded_file($myFile["tmp_name"], 
     UPLOAD_DIR . $name); 
    if (!$success) { 
     echo "<p>Unable to save file.</p>"; 
     exit; 
    } 

    // set proper permissions on the new file 
    chmod(UPLOAD_DIR . $name, 0644); 
} 

所以我有這個在我的網站這樣:

example.com/uploader.php

在服務器2號,我跑命令:

curl --request POST --data-binary "@binary.jpg" http://example.com/uploader.php 

然後我檢查我/ tmp /文件夾的文件名爲binary.jpg,但它不是那裏,這裏有什麼問題?

謝謝。

+0

這是http://stackoverflow.com/questions/12667797/using-curl-to-upload-post-data-with-檔案? –

+0

@NicolasBouvrette第 – bobb

+0

你可以嘗試在該帖子中提出的curl命令來查看你的上傳器是否工作? –

回答

0

它可能在您運行curl命令的位置。例如,如果你運行在/ home/student然後二進制。 Jpg位於/ home/student/binary位置。 Jpg 運行curl命令後,您是否獲得成功傳輸消息?

0

在代碼if (!empty($_FILES["myFile"])) {中,您正在專門檢查數組$_FILES的字段myFile,然後執行其他操作。雖然curl命令不建議以名稱myFile發送二進制文件。您可以將您的POST字段的名稱確定爲curl命令,問題將有望得到解決。 (也可以嘗試在代碼中打印整個$_POST$_FILES陣列以進行調試)

+0

那到底是怎麼回事?喜歡這個? curl --request POST --data-binary「[email protected]」http://example.com/uploader.php – bobb

+0

我做了curl --request POST --data-binary [email protected] http:/ /example.com/uploader.php,沒有結果。這太令人沮喪了,它一定很簡單? – bobb

相關問題