Curl使用PHP进行上传

时间:2013-09-12 19:42:29

标签: php http iis curl libcurl

我编写了一个PHP脚本,它使用CURL将大文件从一台Windows服务器传输到另一台Windows服务器。两者都运行IIS,文件上传限制为2GB。我的过程适用于低于2GB的文件。但是,文件失败> 2GB。

我听说CURL可能能够以块的形式发送文件,这可能会解决我的问题。但是,我找不到任何关于如何做到这一点的好例子。我目前的工作代码发布在下面。有谁知道如何修改它以块的形式发送我的文件(即100MB块)?

$postVars = array("file1" => $fileContents1,
                  "file2" => $fileContents2,
                  "outputPath" => $outputPath);

// Initializing curl
$ch = curl_init();

// Configuring curl options
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_BUFFERSIZE, '64000');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, '3');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data'));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_POSTFIELDS,$postVars);

echo "Sending files...\n";
curl_setopt($ch, CURLOPT_TIMEOUT, 9999);

if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo 'Operation completed without any errors';
}

$info = curl_getinfo($ch);
print_r($info);
curl_close($ch);

1 个答案:

答案 0 :(得分:0)

plupload是一个javascript / php库,它非常易于使用,并允许分块所需的大小。

它使用HTML5。 I found only the way to uploading a large file is PlUpload Library并制作FileManager应用程序。希望它也能帮到你。