【问题标题】:Uploading multiple files in PHP using HTML Form or cURL使用 HTML 表单或 cURL 在 PHP 中上传多个文件
【发布时间】:2014-08-15 08:44:35
【问题描述】:

我正在使用 multipart/form-data 上传一个文件,并将上传的文件放在另一个 php 文件中以在其他地方使用它。

这是我使用的多部分/表单数据:

<html>
<body>
<form enctype="multipart/form-data" action="facebook.php" method="post">
    <p><label for="source">Photo</label><input type="file" name="source" /></p>
    <p><input type="submit" value="Upload" /></p>
</form>
</body>
</html>

现在我改为使用 cURL 上传文件,因为我想上传多个文件,所以我不需要使用表单。

这是我现在使用的代码:

<?php

$ch = curl_init('http://localhost/faceads/facebook.php');
curl_setopt_array($ch, array(
    CURLOPT_POSTFIELDS => array(
        'files[]' => '@C:\xampp\htdocs\faceads\Assento-Novo.png',
    ),
));
if (false === ($res = curl_exec($ch))) {
    die("Upload failed: " . curl_error($ch));
}
?>

我正在尝试以与之前相同的方式在 facebook.php 中获取上传的文件,但它不起作用,而且因为我对 cURL 几乎一无所知,所以我不知道该怎么做。

这是现在的 facebook.php 文件:

if (!empty($_FILES)) {
    $uploaddir = './uploads/'; // Upload folder
    $uploadfile = $uploaddir . basename($_FILES['source']['name']);
    if (move_uploaded_file($_FILES['source']['tmp_name'], $uploadfile)) {
       USE THE FILE URL
               .
               .
               .
    }    
}

谁能帮我说说如何使用 cURL 获取上传的文件?

谢谢

【问题讨论】:

    标签: php curl file-upload


    【解决方案1】:

    您不需要 cURL 来上传多个文件;您可以使用常规表单上传一堆。

    使用 HTML 表单上传多个文件

    客户端

    <!-- uploader.html -->
    <form enctype="multipart/form-data" method="post" action="uploader.php">
        <input name="blob[]" type="file" /><br />
        <input name="blob[]" type="file" /><br />
        <input type="submit" value="Upload these files" />
    </form>
    

    服务器端

    // uploader.php
    if(isset($_FILES["blob"])){
        for($i = 0; $i < count($_FILES["blob"]["name"]); $i++){
            $tmp_name = $_FILES["blob"]["tmp_name"][$i];
            $blob_name = "file-name.ext"; // generate an unique name
            if(move_uploaded_file($tmp_name, "destination-folder/" . $blob_name)){
            // do something with the uploaded file
            }
        }
    }
    

    使用 cURL 上传多个文件

    $request = curl_init('http://domain.com/uploader.php');
    curl_setopt($request, CURLOPT_POST, true);
    curl_setopt(
        $request,
        CURLOPT_POSTFIELDS,
        array(
            'blob[0]' => '@' . realpath('first-file.jpg'),
            'blob[1]' => '@' . realpath('second-file.jpg')
        )
    ));
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    echo curl_exec($request);
    curl_close($request);
    //
    // for the other part use the uploader.php code from above
    

    【讨论】:

    • 问题是我想要它而不需要手动填写表格,这就是我使用 cURL 的原因。我的问题是如何从 cURL 获得结果。如何在 facebook.php 中获取上传的文件
    • 好吧,创建一个文件,比如说 curl.php,然后使用上面的 sn-p,创建另一个文件并将其命名为 uploader.php 或 facebook.php,使用另一个 sn-p我发送了我的答案,就是这样。请务必使用正确的文件路径,并检查您是否有权在该上传文件夹上写入。
    • 我的问题是:我不知道在uploader.php/facebook.php中写什么来使用上传文件,就像我使用表单时一样。
    • 你从我的回答中得到了它。否则,您可以使用之前使用的相同文件。
    • 在我的文件中,我在 $uploadfile 变量中有上传的文件 URL,我以后可以使用它吗?在您的回答中,使用 cURL,我在哪里可以找到它?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2012-11-24
    • 1970-01-01
    • 2017-11-12
    • 2011-10-23
    • 2015-05-04
    相关资源
    最近更新 更多