2011-03-27 144 views
10

我有一個表單(HTML,PHP),可以讓最終用戶上傳文件,用上傳文件(特別是.csv)中的記錄更新數據庫(MySQL)。但是,在phpscript中,我只能得到文件名,而不是指定文件的完整路徑。 fopen()由於這個原因失敗。任何人都可以讓我知道我如何才能找到完整的路徑?獲取完整的上傳文件的路徑 - PHP

HTML代碼:

<html> 
<head> 
</head> 
<body> 
<form method="POST" action="upload.php" enctype="multipart/form-data"> 
    <p>File to upload : <input type ="file" name = "UploadFileName"></p><br /> 
    <input type = "submit" name = "Submit" value = "Press THIS to upload"> 
</form> 
</body> 
</html> 

php腳本:

<?php 
    ..... 
...... 
    $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory 
?> 
+0

這是有幫助的好問題。 – 2016-10-05 11:26:46

回答

25

name是指在客戶端的文件名。要獲取文件名(包括完整路徑)上服務器端,則需要使用tmp_name

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3

使用下面的代碼,

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3
$target='uploads/'.basename($_FILES['UploadFileName']['name']); 

if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) { 

    //Insert into your db 

    $fp = fopen($target, "r"); 
} 
2

我寫了這樣的:

$filePath = realpath($_FILES["file"]["tmp_name"]); 

這給了我PHP上傳文件的完整路徑。如果您發現下載文件0字節的問題,只是修改此內容lenght線這樣

header("Content-Length: ".filesize($filePath)); 

其中$文件路徑應該是絕對的文件路徑不只是文件句柄。