2017-06-26 15 views
0

私はこのチュートリアルhttp://www.allphptricks.com/upload-file-using-php-save-directory/を使用して、PHPでビデオファイルをアップロードするためのフォームとコードを設定しました。それは成功した私は、後藤、私が言ったようにPHPは正常にアップロードされていますが、コードはディレクトリに保存されていません

HTMLコード

<html> 
<head> 
<title>Upload File Using PHP and Save in Directory - AllPHPTricks.com</title> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 
</head> 
<body> 
<br /><br /> 
<form name="form" method="post" action="upload.php" enctype="multipart/form-data" > 
<input type="file" name="my_file" /><br /><br /> 
<input type="submit" name="submit" value="Upload"/> 
</form> 
<br /><br /> 
<a href="http://www.allphptricks.com/upload-file-using-php-save-directory/">Tutorial Link</a> <br /><br /> 
For More Web Development Tutorials Visit: <a href="http://www.allphptricks.com/">AllPHPTricks.com</a> 
</body> 
</html> 

PHPコード

<?php 
    if (($_FILES['my_file']['name']!="")){ 
    // Where the file is going to be stored 
     $target_dir = "upload/"; 
     $file = $_FILES['my_file']['name']; 
     $path = pathinfo($file); 
     $filename = $path['filename']; 
     $ext = $path['extension']; 
     $temp_name = $_FILES['my_file']['tmp_name']; 
     $path_filename_ext = $target_dir.$filename.".".$ext; 

    // Check if file already exists 
    if (file_exists($path_filename_ext)) { 
    echo "Sorry, file already exists."; 
    }else{ 
    move_uploaded_file($temp_name,$path_filename_ext); 
    echo "Congratulations! File Uploaded Successfully."; 
    } 
    } 
    ?> 

保存されたいかなるビデオファイルが存在しないことを確認したときにしかしたびにアップロードされたと言いますファイルが正常にアップロードされたと報告されますが、実際には何も格納およびアップロードされていません。

+0

これらの変数の出力がどのように見えましたか? – Bernhard

答えて

0

でファイルを保存しようとしたフォルダへの書き込みアクセスをするために関連していますシステムではありますが、確かにWindows上ではそうです。

<?php 
    $fieldname='my_file'; 
    if(isset($_FILES[ $fieldname ])){ 

     $target_dir = $_SERVER['DOCUMENT_ROOT'] . '/upload/'; 
     $file = $_FILES[ $fieldname ]['name']; 
     $tmp = $_FILES[ $fieldname ]['tmp_name']; 

     $filename = pathinfo($file, PATHINFO_FILENAME); 
     $targetpath = $target_dir . $filename; 

     if(!file_exists($target_dir)){ 
      exit('Error: Target directory does not exist'); 
     } 
     clearstatcache(); 

     if(file_exists($targetpath)) { 
      echo 'Sorry, file already exists.'; 
     }else{ 
      $results = move_uploaded_file($tmp, $targetpath); 
      echo $results ? 'Congratulations! File Uploaded Successfully.' : 'Error-Failed to store file'; 
     } 
     clearstatcache(); 
    } 
?> 
+0

私はこのコードをあなたが示唆したように試してみましたが、**エラー - ファイルを保存できませんでした**私はcentos 6 OSを使用しています。 –

+0

上記の '$ target_dir'は指定された場所に存在しますか? – RamRaider

+0

実際、私が気づいたのは自分のフォームのセットアップと、あなたが持っていたものが異なっていたことでした。私はこれを '$ file = $ _FILES [$ fieldname] ['my_file']に変更しました。 $ tmp = $ _FILES [$ fieldname] ['tmp_name']; '残念ながら、ファイルは既に存在します。**エラーですが、何もチェックしてもまだアップロードされていません。 –

0

はい、ファイルはアップロードされている可能性がありますが、保存されているかどうかは確認しません。 move_uploaded_fileは成功した場合はtrueを返し、失敗した場合はfalseを返します。http://php.net/manual/en/function.move-uploaded-file.phpを返します。エラーが返されるかどうかを確認する必要があります。それは* nixの上の異なる場合があります -

問題は、おそらくあなたは、私が相対パスではなく絶対パスを使用すると、うまく機能することを見出した

関連する問題