如何保存以curl形式提交的文件网址?

时间:2012-12-17 11:28:16

标签: php forms file-upload curl

我正在尝试创建一个上传插件,允许用户从他们的计算机或从他们输入的网址上传任何文件到提供的文本字段。

这是我必须从本地磁盘上传文件的脚本:

session_start();
//Loop through each file
for($i=0; $i<count($_FILES['file']); $i++) {
  //Get the temp file path
  if (isset($_FILES['file']['tmp_name'][$i]))
  {
  $tmpFilePath = $_FILES['file']['tmp_name'][$i];
  }

  //Make sure we have a filepath
  if ($tmpFilePath != ""){
    //Setup our new file path
    if (isset($_FILES['file']['name'][$i]))
    $newFilePath = "./uploaded_files/" . $_FILES['file']['name'][$i];
    }

    //Upload the file into the temp dir
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {

    echo "Uploaded Successfully!<br />";

}

我现在需要的是卷曲部分从文本字段中提交的网址中获取文件并将其保存到同一位置。

这是我到目前为止的cURL:

function GetImageFromUrl($link) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch,CURLOPT_URL,$link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result=curl_exec($ch);
    curl_close($ch);
    return $result;
}

$sourcecode=GetImageFromUrl("http://domain.com/path/image.jpg");
$savefile = fopen('/home/path/image.jpg', 'w');
fwrite($savefile, $sourcecode);
fclose($savefile);

1 个答案:

答案 0 :(得分:0)

您是否有特殊原因要使用卷曲?如果没有它,你就可以这样做:

$url = $_POST['url'];
$file_content = file_get_contents($url);
$file_name = array_pop(explode('/', parse_url($url, PHP_URL_PATH)));
file_put_contents('/home/path/' . $file_name, $file_content);

在使用它之前,您还应该考虑查看$ url并检查它是否有效。