2016-12-21 9 views
0

PHPを使用してサーバーにファイルをアップロードしようとしていますが、いくつか問題があります。私はこのガイドを見つけました:http://www.sumedh.info/articles/store-upload-image-postgres-php-2.html。 私のHTMLは次のとおりです。imgファイルをPHPでアップロードするには

<form action="img_user.php" method="POST" enctype="multipart/form-data" > 
    <button id="buttonImgProf" class="btn" type="button" onclick="caricaImgProf()">Inserisci un immagine</button> 

    <div id="imgProfLoader" class="postContent" style="display:none;"> 
    Name : <input type="text" name="name" size="25" length="25" value=""> 
    <input type="file" name="userfile"></input> 
    <button class="btn" type="submit">Carica immagine</button> 
    </div> 
</form> 

(私はJavaScriptを使用しているため、部品が表示されません)。 PHPのコードは次のとおりです。

$uploaddir = 'localhost'; //i have try lots of dir, maybe the error is here? 

    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
    $name = $_POST['name']; 
    echo $_FILES['userfile']['tmp_name']; 
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
    { echo "File is valid, and was successfully uploaded.\n"; 
    } 
    else { echo "File not uploaded"; } 

出力はFile not uploaded

+0

は、あなたが答えに投稿されたものにあなたの質問のコードを上書きしないでください。 ** edit:** ....私が試したもの " –

答えて

0

あたりとして

($ uploaddir = 'localhostが';)そう($ uploaddir =「アップロード/のような任意のパスにローカルホストを変更するURLである必要がありません物理パスでなければなりません「)

完全なデモコード:

まず、PHPはファイルのアップロードを許可するように設定されていることを確認してください。あなたの "php.iniの" ファイルで

、file_uploadsディレクティブを検索し、オンに設定します。 file_uploadsを=その後、

でフォームのページ

<!DOCTYPE html> 
<html> 
<body> 

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

</body> 
</html> 



Make sure that the form uses method="post" 
The form also needs the following attribute: enctype="multipart/form-data". It specifies which content-type to use when submitting the form 

"upload.phpを"ファイルは、ファイルをアップロードするためのコードが含まれています。

 <?php 
     $target_dir = "uploads/"; 
    if (is_dir($upload_dir) && is_writable($upload_dir)) { 
    // you can write anything in this folder 
} else { 
    die('Upload directory is not writable, or does not exist.'); 
} 
     $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
     $uploadOk = 1; 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
     // Check if image file is a actual image or fake image 
     if(isset($_POST["submit"])) { 
      $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
      if($check !== false) { 
       echo "File is an image - " . $check["mime"] . "."; 
       $uploadOk = 1; 
      } else { 
       echo "File is not an image."; 
       $uploadOk = 0; 
      } 
     // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 0) { 
     echo "Sorry, your file was not uploaded."; 
    // if everything is ok, try to upload file 
    } else { 

      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
       echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 
     } 
     ?> 

PHPスクリプトは説明(これは、ファイルアップロードフォームのアクションページです)

$target_dir = "uploads/" - specifies the directory where the file is going to be placed 
$target_file specifies the path of the file to be uploaded 
$uploadOk=1 is not used yet (will be used later) 
$imageFileType holds the file extension of the file 
Next, check if the image file is an actual image or a fake image 

注: "upload.php"ファイルが存在するディレクトリに "uploads"という新しいディレクトリを作成する必要があります。アップロードされたファイルはそこに保存されます。

+0

私はこのコードをコピーして、それが返さ:。。ファイルはイメージです - 画像/ jpeg.Sorry、あなたのファイルをアップロードエラーが発生した –

+0

私は、move_uploaded_file()関数 –

+0

第一メイクの問題を持っていますあなたの現在のPHPページが置かれている "uploads"フォルダと、Webサーバーが "uploads /"ディレクトリに書き込む権限を持っていることを確認してください。 "uploads /"フォルダのアクセス許可を777に設定してください。 –

1

$uploaddir = 'localhost';ある - localhostデータベース接続の目的のためではなく、フォルダのアップロードディレクティブのためです。書き込み可能なフォルダを使用してください。アップロードパスマニュアルhttp://php.net/manual/en/features.file-upload.post-method.php

<?php 
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead 
// of $_FILES. 

$uploaddir = '/var/www/uploads/'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 

echo '<pre>'; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "File is valid, and was successfully uploaded.\n"; 
} else { 
    echo "Possible file upload attack!\n"; 
} 

echo 'Here is some more debugging info:'; 
print_r($_FILES); 

print "</pre>"; 
+0

php.iniファイルを確認しました:file_uploads = On。このようにしてコードを変更します: –

+0

@DiegoZuccaのように、私の答えで書いた '$ uploaddir = 'localhost';' localhost'はデータベース構文に予約されており、フォルダとはみなされません。それはに書き込むことができるため、フォルダ –

0

私はあなたのHTMLとPHPコードを1つのファイルに入れて、 "空ではない" $_FILESというPHPコードをラップしてもうまくいくようです。ここには完全なファイルがあります。

caricaImgProf()機能の内容を入力していないため、を使用可能にするために、display:none;スタイルを削除しました。ああ、$uploaddirlocalhostのようなドメインではありません。有効なディレクトリでなければなりません。ローカルホストの参照を削除してください。そのため、スクリプトの場所の横にファイルがアップロードされるようにしてください。プロダクションサーバーはもちろんですが、トピックオフです:P

この単一のファイルの名前はimg_userにする必要があります。PHP:

E:私は、画像ファイルを提出すると、ファイルが正常にアップロードする前に、元のファイル名と同じフォルダに右隣PHPスクリプトに保存されますとき

<?php 

if(!empty($_FILES)){ 
    $uploadfile = basename($_FILES['userfile']['name']); 
    $name = $_POST['name']; 
    echo $_FILES['userfile']['tmp_name']; 
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
    { echo "/File is valid, and was successfully uploaded.\n"; 
    } 
    else { echo "File not uploaded"; } 
    exit(); 
} 

?><html> 
<body> 
<form action="img_user.php" method="POST" enctype="multipart/form-data"> 
    <button id="buttonImgProf" class="btn" type="button" onclick="caricaImgProf()">Inserisci un immagine</button> 
    <div id="imgProfLoader" class="postContent"> 
     Name : <input type="text" name="name" size="25" length="25" value=""> 
     <input type="file" name="userfile" /> 
     <button class="btn" type="submit">Carica immagine</button> 
    </div> 
</form> 
</body> 
</html> 

それは、これを出力します。 \ wamp64 \ tmp \ php38E6.tmp /ファイルは有効で、アップロードされたファイルは です。

+0

これは、divが表示されていないために問題があると思うので、ブラウザはimgデータをthid divで取っていないのですか? –

+0

いいえ、私のファイルをそのまま試してみてください。何も変更せずにそのまま試してみてください。私に教えてください。 –

+0

まだ試しましたか?それは動作させるために非常に小さな変更を加えた独自のスクリプトです。あなたはそれを試す必要があります! –

関連する問題