2012-09-30 23 views
0

我試圖創建一個文件共享網站,我可以顯示所有上傳圖片的鏈接。用戶上傳一個文件後,他們將能夠看到已上傳的文件並上傳另一個文件。但是,目前我遇到兩個問題: 1.我不知道如何在用戶上載圖像後重新顯示主上傳頁面。 2.我不知道如何動態創建基於目前文件的鏈接。PHP/HTML - 在列表中顯示上傳的文件

下面是代碼,我到目前爲止有:

HTML/PHP 文件共享站點

<body> 
<h2>File-Sharing Site</h2> 
<h3>Upload file</h3> 
<form action="upload_file.php" method="post" enctype="multipart/form-data"> 
Search for file: <br /> 
<input type="file" name="file" id="file" /> 
<input type="submit" name="submit" value="Upload" /> 
</form> 
</body> 
</html> 

PHP

<?php 
    $allowedExts = array("jpg", "jpeg", "gif", "png"); 
    $extension = end(explode(".", $_FILES["file"]["name"])); 
    if((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/pjpeg")) 
    && ($_FILES["file"]["size"] < 800000) 
    && in_array($extension, $allowedExts)) 
    { 
    if($_FILES["file"]["error"] > 0) 
    { 
     echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

     if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
      echo $_FILES["file"]["name"] . " already exists. "; 
     } 
     else 
     { 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
      "upload/" . $_FILES["file"]["name"]); 
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
} 
else 
{ 
    echo "Invalid file"; 
} 

?>

+0

你的腳本打開你的服務器總妥協。你有可憐的 - 容易繞過「安全」。我建議你殺死這個代碼,並尋找這個網站上很多'安全上傳'腳本問題+答案。 –

+1

此代碼不適用於商業目的。這不會是一個公共文件,並且安全性將會用於其他事情。現在,我需要弄清楚如何根據文件上傳腳本中的內容在主文件中創建一個動態列表。 – MrMedia715

回答

0

1)使用Header functionheader('Location: ... ');用於將用戶重定向到主上傳頁面
2)您需要使用SQL *解決方案來存儲文件鏈接並顯示它們。
圖2a)給出唯一的文件名到所有上傳的文件(即MD5($文件[「名」])

1

您可以將它添加到你的主頁顯示上傳的文件:

<?php 
if ($handle = opendir('upload/')) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      echo "$entry<br>"; 
     } 
    } 
    closedir($handle); 
} 
?> 

當然你必須重定向到主頁面才能看到文件列表並可能上傳更多的文件,或者使用ajax上傳文件,這樣你就不會被強制重定向回去。

我已經使用了現成的插件實現這一切: http://blueimp.github.com/jQuery-File-Upload/

0

您可以使用Ajax file upload。 使用Ajax上傳文件,然後返回文件路徑爲響應......然後,只需打印響應,網頁上的鏈接(在某些DIV,現場...)

$.ajaxFileUpload 
    (
     { 
      url:'upload_file.php', 
      secureuri:false, 
      fileElementId:'file', 
      dataType: 'json', 
      success: function (response) 
      { 
       $("#div_where_you_print_response").html(response) 
      }, 
      error: function (data, status, e) 
      { 
       alert(e); 
      } 
     } 
    );