2017-04-04 33 views
0

私の目的は、自分のPCから特定のフォルダにリモートファイルの作成をアップロードすることですが、私のコードでは何が間違っているのか分かりません。名前と拡張子.jpgのファイルをアップロードしますが、ファイルを指定されたフォルダに移動していません。ファイルを特定のフォルダにアップロードする

if(isset($_POST["image"])){ 

    define("SITE_NAME","project_name/"); //constant for project name 
    define("SITE_PATH",$_SERVER['DOCUMENT_ROOT']."/".SITE_NAME); //constant for project base directory 
    define("IMAGES_URL",SITE_URL."images/"); //constant for image directory 

    $upload_base_dir=IMAGES_URL; 
    $upload_time_dir=date('Y')."/".date('m')."/".date('d')."/"; // setup directory name 
    $upload_dir = $upload_base_dir.$upload_time_dir; 

    if (!file_exists($upload_dir)) { 
     mkdir($upload_dir, 0777, true); //create directory if not exist 
    } 

    $input = $_POST["image"]; 
    $file = fopen(time()."image.jpg", 'wb'); 
    fwrite($file, $input); 

    //$image_name=basename($_FILES['image']['name']); 
    $image=time().'_'.$image_name; 
    move_uploaded_file($file,$upload_dir.$image); 

    fclose($file); 

} 

前もって感謝します。

+0

問題はあなたがイメージをアップロードしていないということです。あなたは 'move_uploaded_file()'関数を必要とします。ここには基本的な例がありますhttp://php.net/manual/en/features.file-upload.post-method.php – Mario

+0

正しいスペル、書式、文法、および明瞭さ – mayersdesign

答えて

0

move_uploaded_file($ file、$ upload_dir。$ image)は、$ _FILESスーパーグローバルを介してアクセス可能なtemp内の項目に対してのみ機能します。あなたが投稿内のstrieamとしてあなたのファイルを送信している場合、それは動作しません。

1)ファイルは、フォームのアップロードが確認フォームがマルチパートで、$ _FILESスーパーグローバル

move_uploaded_file($_FILES['userfile']['tmp_name'], $yourDirectory.$yourFilename); 

2を介して、あなたのファイルにアクセスさせる場合には)あなたがポストを経由してストリームとしてファイルを投稿する場合(これを覚えておきます大きなファイルは要求の制限を超えてしまうため、小さなファイルに対してのみ機能します)。 )それはfopenを使用してdestiantionですかあなたはそれが名前の変更を(使用し作成した後にそれを移動するために、ファイルを直接保存 - http://php.net/manual/en/function.rename.php

rename($currentFilePath, $newFilePath) 

P.S.ポストストリームとしてファイルを送信することは非常に悪い考えです。

+0

私は、私はファイルをアップロードしてそこにファイルを置くことができません。私のファイルは最大300kbです。とにかく – aitsu

+0

あなたは定期的な形式でアップロードしていますか? – Auris

+0

いいえ私はフォーム経由でアップロードしていないので、ここで私はぎこちないです。 – aitsu

関連する問題