2017-04-17 79 views
1

我試圖動態上傳圖片。 HTML代碼是:Move_uploaded_file()函數顯示錯誤

<form method="post" action="" name="form1" id="form1" enctype="multipart/form-data"> 
    <label for "file">Select Picture</label><br> 
    <input type="file" name="file" id="file"><br> 
    <input type="hidden" value="<?php echo $_POST['pic'];?>" name="pic"> 
    <input type="submit" value="Upload" name="upload" id="upload"><br> 
</form> 

After I write the following code it is showing me the error: " move_uploaded_file() [function.move-uploaded-file]: The second argument to copy() function cannot be a directory " and "Unable to move 'C:\xampp\tmp\phpB67C.tmp' to 'images/' ". The php code for this is:

if(isset($_POST['upload'])){ 
    $pic=$_POST['pic']; 
    move_uploaded_file($_FILES["file"]["tmp_name"], "images/".$pic); //."jpg"); 
} 

請告訴我如何刪除錯誤,並能夠添加和查看圖片。

+0

print_r($ _ POST);給你? – Sebastian

+0

它給我陣列([圖片] => [上傳] =>上傳) – Shreya

+0

更改isset($ _ POST ['upload'])isset($ _ FILES ['upload']) –

回答

1

Change Like This

您可以使用$_FILES["file"]["name"]變量獲取文件名。因此,如果任何文件上傳你必須得到的文件名使用這種方法,而不是與$_POST

if(isset($_POST['upload'])) 
{ 
    $pic=$_FILES["file"]["name"]; 
    move_uploaded_file($_FILES["file"]["tmp_name"], "images/".$pic); //."jpg"); 
} 
+0

出於安全原因,爲了防止碰撞,你不應該使用原始文件名 – Sebastian

+0

好,但她想解決這個錯誤,這是它的實際代碼,如果更改文件名,很容易在文件名前設置'time()'函數 – ImBS

+0

你是對的。我只是想說明,知道 – Sebastian

0

讓我做你的窗體上的一些變化

<form method="post" action="" name="form1" id="form1" enctype="multipart/form-data"> 
<label for "file">Select Picture</label><br> 
<input type="file" name="file" id="file"><br> 
<input type="hidden" value="<?php if(isset($name)){ echo $name; } ?>" name="pic"> 
<input type="submit" value="Upload" name="upload" id="upload"><br> 

和PHP代碼是在這裏, 改變MyUploadFolder名稱到您的文件夾路徑。

if(isset($_FILES['file']['name'])){ 
    $name= $_FILES['file']['name']; 
    $tmp_name = $_FILES['file']['tmp_name']; 

if(move_uploaded_file($tmp_name,"MyUploadFolder/".$name)) 
    { 
    echo 'Uploaded'; 
    } 
else{ 
    echo 'Please Choose a File'; 
    } 
}