簡體   English   中英

如何使用php檢索上傳的文件

[英]How to retrieve uploaded files using php

好。 自2011年8月24日以來,我一直在此站點上搜索。(無關緊要),該方法可以顯示用戶上傳的文件。 我在管理方面有表格,一切正常。 我還有一個表格,顯示用戶填寫的表格也可以使用。 但是我無法在表上查看文件或其名稱。

我的數據庫表具有一個未簽名的主ID auto_increment int(11)。

這是我寫的代碼:

//This gets all the other information from the form 
$company=$_POST['company']; 
$location=$_POST['location'];
$pic=($_FILES['userfile']['name']);

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

//target to the path of my files
$target_path = "uploads/post_id/";
if(!is_dir($target_path)) mkdir($target_path);
$uploadfile = $target_path . basename($_FILES['userfile']['name']);

//Move the uploaded file to $taget_path
(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile));

在您填寫詳細信息的表格上,我具有以下內容:

<tr>
<td><label for="company_name">Company Name</label></td>
<td><input type="text" name="company" id="company" value="" size="38" /></td>
</tr>
<tr>
<td><label for="location">Location</label></td>
<td><input type="text" name="location" id="location" value="" /></td>
</tr>
<tr>
<td>Upload a File:</td>
<td><input name="userfile" id="userfile" type="file" /></td>
</tr>

顯示查詢結果的前端表看起來像這樣,只是文件feild。

echo "<td>";
echo "<a href=../admin/uploads/post_id/> $row'userfile'</a>";
echo "</td>";

如您所見,我正在嘗試獲取文件名以及文件本身。 如果它是pdf / jpg / doc,則單擊鏈接時應該可以查看/下載。

螞蟻的想法...

一些建議,您可以更改以使其正常工作。

1.上載表格

您的表單標簽是什么樣的? 不要忘了按如下方式包含enctype參數:

<form type="post" action="" enctype="multipart/form-data">
    ...
</form>

2.消毒

$company  = mysql_real_escape_string($_POST['company']); 
$location = mysql_real_escape_string($_POST['location']);
$pic      = mysql_real_escape_string($_FILES['userfile']['name']);

上面的幾行是幫助防止查詢遭受SQL注入攻擊的第一步。

3. SQL查詢

$userfile不存在,因為您實際上已將文件名分配給$pic因此查詢應如下所示:

$query = "INSERT INTO user_DB 
          VALUES ('','$company', '$location', '$pic')";

4. HTML輸出

現在鏈接到輸出表中的文件:

echo "<td>";
echo "<a href=" . $target_path . basename($row['userfile']) . ">
         {$row['userfile']}</a>";
echo "</td>";

我認為靈魂取代這個

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$pic' )";

表單enctype是您可能會錯過的最基本的東西。 許多初學者會這樣做。 因此,只需檢查表單中是否具有enctype屬性即可。

<form enctype="multipart/form-data">

只有擁有此權限,您才能通過表單上傳文件。 您可能會出錯的另一個地方是

$query = "INSERT INTO user_DB VALUES ('','$company', '$location', '$userfile' )";

您將文件名存儲在名為$ pic的變量中,但是在這里已給定$ userfile,因此只需嘗試將其更改為$ pic。

您可以將一列用作auto_increament

當您插入新用戶時,使用此查詢可以獲得已注冊用戶的總和

$ qry = mysql_qyery(“從users選擇*”); 您可以通過使用獲得用戶數

$ count = mysql_num_rows($ qry); 因此,在此之后,您插入一個新用戶,他的ID將為

$ count1 = $ count + 1; $ id ='F'。$ count1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM