2017-04-04 111 views
0

我的目的是上傳一個遠程文件從我的電腦創建到特定的文件夾,但我不知道我的代碼下面有什麼問題。它會上傳帶有名稱和.jpg擴展名的文件,但不會將文件移動到指定的文件夾。上傳文件到一個特定的文件夾php

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)僅適用於temp內的項目,可通過$ _FILES superglobal訪問。如果你在文章中發送你的文件作爲strieam,那不會工作。

1)如果文件是一種形式上傳確認形式爲多,並通過$ _FILES超全局

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

2)訪問您的文件,如果您發佈的文件通過後流(記住這個將只適用於小文件,因爲大文件將超出請求限制)。 http://php.net/manual/en/function.rename.php

rename($currentFilePath, $newFilePath) 

附註: - 使用的fopen或將它移到您創建它用重命名()後的文件直接保存到它的destiantion發送文件作爲後期流是一個非常糟糕的主意。

+0

我看,這就是爲什麼它不工作...所以我無法制作dir wheil我正在上傳文件並在那裏放置文件?無論如何,我的文件最多爲300kb – aitsu

+0

您是否通過常規格式上傳? – Auris

+0

不,我沒有通過窗體上傳它,這就是爲什麼我被困在這裏。 – aitsu

相關問題