2012-01-18 128 views
1

我是一個盡力自學PHP的新手程序員。我試圖讓文件上傳起作用,並且遇到了一些問題。該文件似乎成功上傳,但它的臨時位置是服務器上不存在的位置。上傳文件但目錄不存在

下面是我用上傳文件的代碼:

<?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。所以這一部分是正確的,但那裏有一個奇怪的/phpgarbage文件夾,據說在tmp文件夾內,每個文件都說它在。唯一的問題是,這些文件夾不存在於服務器上。

有什麼想法?讓我知道是否有任何我可以更具體的。這是我第一次編程相關的帖子,所以讓我知道是否有更多的信息我應該分享。

謝謝你的時間!

+1

它不是一個文件夾其文件名,它的隨機分配由php。 – 2012-01-18 18:29:49

+0

所以/ phpblahblah是我上傳文件的文件名?上傳後,我還應該能夠在臨時文件夾中看到這些文件嗎? – seanmichael 2012-01-18 19:35:35

+0

是的,但它們非常短暫。 – 2012-01-18 22:36:01

回答

2

你必須將圖像保存,以便以後能夠訪問它。要做到這一點,添加以下代碼:

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

以下行後:

if (!empty($imgfile)) 
{ 

注意,$path必須是可寫的。現在文件名變爲$path.$_FILES["imgfile"]["name"]。還要確保執行一些安全檢查,你的代碼是可以動搖的。

+0

嘿,感謝您的快速回復!我有三個後續問題給你。 1)我應該能夠在上傳後看到默認臨時文件夾中的圖片嗎?和2)一旦我做了這個舉動,我應該能夠看到我把它移動到正確的文件夾中的圖片?然後3)當我設置文件夾的路徑我想圖片移動到我只需要設置它從PHP文件所在的目錄開始正確?所以,我的php文件目前位於一個名爲html的文件夾中,並且我希望它移動到Images,所以我只需使用$ path =「/Images";.....是嗎?謝謝! – seanmichael 2012-01-18 19:45:59

+0

1)沒有。 2)是; 3)如果你的php文件在/ www/html下,並且路徑=「images /」(開始時沒有斜線),你的圖像將位於/ www/html/images – technology 2012-01-18 19:56:55

2

你需要將它從臨時存儲移動到您的目錄...

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