0

ユーザーがコンピューターから、または提供されたテキスト フィールドに入力した URL から任意のファイルをアップロードできるようにするアップロード プラグインを作成しようとしています。

これは、ローカル ディスクからファイルをアップロードするために必要なスクリプトです。

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 部分がテキスト フィールドに送信された URL からファイルを取得し、同じ場所に保存することだけです。

これが私がこれまで持っている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);
4

1 に答える 1

0

curl を使用する特定の理由はありますか? それなしで簡単にそれを行う方法は次のとおりです。

$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 を調べて、それを使用する前に有効かどうかを確認することも検討する必要があります。

于 2012-12-17T11:43:12.347 に答える