2012-01-18 14 views
1

私は初心者プログラマーです。私は仕事にファイルのアップロードを取得しようとしている、と私はいくつかの問題があります。ファイルは正常にアップロードされたようですが、一時的な場所はサーバー上に存在しない場所です。ファイルはアップロードされていますが、ディレクトリは存在しません

<?php  
if (isset($_POST['submit'])) 
{ 
$imgfile = $_FILES['imgfile']['name']; 
$temp = $_FILES['imgfile']['tmp_name']; 
$type = $_FILES['imgfile']['type']; 

if (!empty($imgfile)) 
{ 
     $dbc = mysqli_connect('DB_HOST','DB_USER','DB_PASSWORD','DB_NAME') 
    or die('Error connecting to database'); 
    $query = "INSERT INTO photos VALUES(0, '$imgfile',NOW(), '$temp', '$type')"; 

     mysqli_query($dbc,$query); 

     //clear the form      
    $imgfile = ""; 

     mysqli_close($dbc); 
    } 
} 
?> 
<form enctype = "multipart/form-data" method = "POST" action = "<?php 
echo $_SERVER['PHP_SELF']; ?>"> 

<label for = "imgfile">Filename:</label> 
<input type = "file" id = "imgfile" name = "imgfile" /> 
<br /> 
<input type = "submit" value = "upload" name = "submit" id = "submit" /> 
</form> 

これらは、場所のいくつかの例です$_FILES['tmp_name']変数は、それが保存されていると言う:ここで

は、私は、ファイルをアップロードするために使用しているコードだ

/tmp/phpWw6aut

または

/tmp/php4bzVfE

ファイルphp.iniに設定されているデフォルトの一時ディレクトリはroot/tmpです。その部分は正しいですが、次にtmpフォルダ内には、奇妙な/phpgarbageフォルダがあり、各ファイルにはそのファイルが入っていると言われています。唯一のことは、それらのフォルダがサーバ上に存在しないことです。

どのような考えですか?私がもっと具体的にできるものがあれば教えてください。これは初めてのプログラミング関連の投稿ですので、共有する必要がある情報があれば教えてください。

ありがとうございました!

+1

そのフォルダではなく、そのファイル名、そのランダムはphpによって割り当てられます。 –

+0

/phpblahblahはアップロードされたファイルのファイル名ですか?アップロード後に一時フォルダ内のファイルをまだ見ることはできますか? – seanmichael

+0

はい、非常に一時的です。 –

答えて

2

...あなたのディレクトリに一時ストレージからそれを移動する必要があります。 $pathが書き込み可能でなければならないこと

if (!empty($imgfile)) 
{ 

注:次の行の後に

$path = "uploads/images/"; 
if (is_uploaded_file($_FILES['imgfile']['tmp_name'])) { 
    move_uploaded_file($_FILES["imgfile"]["tmp_name"], $path . $_FILES["imgfile"]["name"]); 
} 

:これを行うには、次のコードを追加します。そして、ファイル名は$path.$_FILES["imgfile"]["name"]になりました。また、いくつかのセキュリティチェックを実装することを忘れないでください。あなたのコードは脆弱です。

+0

お返事ありがとうございました!私はあなたのために3つのフォローアップの質問があります。 1)アップロード後にデフォルトの一時フォルダに画像が表示されるはずですか? 2)移動したら、右に移動したフォルダ内の画像を見ることができますか?そして3)私は、私は、PHPファイルが正しいディレクトリから始まるように設定する必要がある画像を移動したいフォルダのパスを設定すると?だから、私のPHPファイルは現在htmlというフォルダにあり、Imageに移動したいので、$ path = "/Images";を使ってみるといいでしょうか?ありがとう! – seanmichael

+0

1) 2)はい。 3)あなたのPHPファイルが/ www/htmlの下にあり、path = "images /"(最初はスラッシュなし)の場合、あなたの画像は/ www/html/imagesの下に置かれます – technology

2

あなたはあなたが後でそれにアクセスできるようにするために画像を保存する必要が

if (is_uploaded_file($_FILES['imgfile']['tmp_name'])) { 
    move_uploaded_file($_FILES['imgfile']['tmp_name'], '/path/filename.jpg'); 
}