2016-08-16 1 views
1

私は次のコードを使用してローカルマシンからサーバー上のファイルをアップロードするPHP Webアプリケーションで作業しています。ファイルのアップロードがPHPで動作しません

$target_dir = "uploads/"; 
     $target_file = $target_dir .basename($_FILES["fileToUpload"]["name"]); 
     $uploadOk = 1; 



     if ($_FILES["fileToUpload"]["size"] > 5000000) { 
      echo "Sorry, your file is too large."; 
      $uploadOk = 0; 
     } 


     if ($uploadOk == 0) { 
      echo "Sorry, your file was not uploaded."; 
      // if everything is ok, try to upload file 
     } else { 
     echo $_FILES['fileToUpload']['name']."<br>";  
     if(move_uploaded_file($_FILES["fileToUpload"]["name"], $target_file)) {  
      echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
      } else { 
      echo "Sorry, there was an error uploading your file."; 
      } 
     } 

しかし、上記のコードupload.php

 <form action="upload.php" method="post" enctype="multipart/form-data"> 
     Select file to upload: 
     <input type="file" name="fileToUpload" id="fileToUpload" value="c:/passwords.txt"> 
     <input type="submit" value="Upload" name="submit"> 
     </form> 

機能していません。アップロードフォルダのアクセス許可を確認しました

drwxrwxrwx 2 ankit ankit 4096 Aug 2 13:41 uploads 

書き込み可能なようです。次のコマンドを使用してプロジェクトのアクセス許可を変更しました

sudo chmod -R 777 /var/www/myproject 

しかし、まだサーバー上にファイルをアップロードできません。私はどこが間違っているのか分かりますか?

+0

あなたはあなたの例で出力メッセージを持っていますか? –

+0

出力メッセージ:申し訳ありませんが、ファイルのアップロード中にエラーが発生しました。 –

+0

$ target_dirパスをフルパスに変更し、それが機能するかどうかを確認してください。また、セキュリティのために、777ではなく775のアクセス権を使用します。 – Ionut

答えて

4

if(move_uploaded_file($_FILES["fileToUpload"]["name"], $target_file)) { 

を変更されたソース、であることを期待お手伝いをしますあなたはあなたがを得ていると言いますあなたは

1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini', 

によるものである

print_r($_FILES); 

を使用するときに3210 1はそう、この

upload_max_filesize = 'Size'; // whatever you want 

Documentation about $_FILES errors

+0

「申し訳ありませんが、ファイルをアップロード中にエラーが発生しました。」 –

+0

@ user1234は、あなたが 'print_r($ _ FILES);を実行したときのエラーについて話しています。 –

+0

upload_max_filesize = 'Size'パラメータを変更することでこの問題を解決できました。 –

3

変更この行:

$_FILES["fileToUpload"]["name"] // contains the original name of the uploaded file from the user's computer 

move_uploaded_fileのドキュメント

$_FILES["fileToUpload"]["tmp_name"] // tmp_name will contain the temporary file name of the file on the server 

へ。アップロード edファイルを移動したいですか? ;-)

それは

+0

私はそれをしましたが、それは動作していないようです。実際に$ _FILES ["fileToUpload"] ["tmp_name"]を出力すると、この変数が存在しないことを意味する出力はありません。 –

+0

print_r($ _ FILES)を試して、使用可能かどうか確認してください。 –

+0

info:Array ( [fileToUpload] =>配列 ( [name] => data)。何tmp_nameがない場合、それが意味し、それが壊れているか破損している [タイプ] => [tmp_name] => [エラー] => 1 [サイズ] => 0 ) ) –

2

move_uploaded_fileは、パラメータ1がtmp_name

ので

あなたのコメントで
if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
+0

tmp_nameや破損したファイルがない場合は、このisuueを修正するにはどうすればよいですか? –

+0

このリンクでも同様の問題が見つかりました。http://stackoverflow.com/questions/14472741/files-field-tmp-name-has-no-value-on-jpg-file-extension 〜によって#staticsan。 – ameenulla0007

関連する問題