簡體   English   中英

使用 cURL 上傳多個文件

[英]Multiple file uploads with cURL

我正在使用 cURL 使用 PHP 將圖像文件從一台服務器傳輸到另一台服務器。 這是我的 cURL 代碼:

// Transfer the original image and thumbnail to our storage server
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://' . $server_data['hostname'] . '.localhost/transfer.php');
curl_setopt($ch, CURLOPT_POST, true);
$post = array(
    'upload[]' => '@' . $tmp_uploads . $filename,
    'upload[]' => '@' . $tmp_uploads . $thumbname,
    'salt' => 'q8;EmT(Vx*Aa`fkHX:up^WD^^b#<Lm:Q'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$resp = curl_exec($ch);

這是我要上傳到的服務器上的 transfer.php 中的代碼:

if($_FILES && $_POST['salt'] == 'q8;EmT(Vx*Aa`fkHX:up^WD^^b#<Lm:Q')
{
    // Save the files
    foreach($_FILES['upload']['error'] as $key => $error)
    {
        if ($error == UPLOAD_ERR_OK)
        {
            move_uploaded_file($_FILES['upload']['tmp_name'][$key], $_FILES['upload']['name'][$key]);
        }
    }
}

除了一個小的邏輯錯誤外,一切似乎都有效。 只有一個文件保存在我要傳輸到的服務器上。 這可能是因為我在我的帖子字段數組中調用了兩個圖像upload[] ,但我不知道該怎么做。 我試圖模仿這樣做:

<input type="file" name="upload[]" />
<input type="file" name="upload[]" />

有誰知道我怎樣才能讓它工作? 謝謝!

這是您在 curl 調用中的錯誤...

var_dump($post)

您正在破壞 $post 數組的數組條目,因為鍵字符串是相同的......

做這個改變

$post = array(
    'upload[0]' => '@' . $tmp_uploads . $filename,
    'upload[1]' => '@' . $tmp_uploads . $thumbname,
    'salt' => 'q8;EmT(Vx*Aa`fkHX:up^WD^^b#<Lm:Q'
);

代碼本身看起來不錯,但我不知道您的 move() 目標目錄。 您正在使用客戶端提供的原始文件名(這是您的 curl 腳本)。 您使用原始上傳的文件名(在 curl 腳本中指定)作為移動目標,沒有覆蓋檢查和路徑數據。 如果兩個上傳的文件具有相同的文件名,您將使用 PHP 第二個處理的圖像覆蓋第一個處理的圖像。

嘗試圍繞 move() 命令進行一些調試:

if (!move_uploaded_file($_FILES['upload']['tmp_name'][$key], $_FILES['upload']['name'][$key])) {
   echo "Unable to move $key/";
   echo $_FILES['upload']['tmp_name'][$key];
   echo ' to ';
   echo $_FILES['upload']['name'][$key];
}

(為了清晰起見,我將回聲分成多行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM