2012-09-14 53 views
3

在此先感謝您的幫助,我希望我對我的請求的解釋是可以理解的。Javascript和PHP上傳系統

我有一個網站,我上傳的腳本,網站等各種HTML頁面,我發現隨着時間的推移有用......對於1目的)爲自己的參照,以及2)分享我與其他人發現。

該網站由2個部分組成。用於查找腳本的搜索頁面以及用於上載它的管理頁面。上傳的HTML文件被放置在我的服務器上的「docs /」目錄中,並將詳細信息添加到搜索頁面的MySQL數據庫中。

的形式如下:

<form name="upload" enctype="multipart/form-data" action="includes/add.php" 
method="post" onsubmit="return validateForm();"> 

<label for="scriptname">Script Name</label><input class="inputarea" type="text" 
name="scriptname"><br> 
<label for="category">Category</label><input class="inputarea" type="text" 
name="category"><br> 
<label for="keywords">Keywords</label><input class="inputarea" type="text" 
name="keywords"><br> 
<label for="content">HTML File</label><input class="inputarea" type="file" 
name="content"><br> 
<input class="submit" type="submit" value="Add"> 
</form> 

我的問題是...是否有JavaScript或PHP沒有辦法做到以下幾點:

  1. 產生了一個自動的文件名上傳的文件(一些隨機的數字會做)
  2. 在「腳本名稱」輸入欄上進行提交,它使得腳本名和文件名必須清楚交代添加到數據庫中的文字...例如超鏈接添加文本。當提交按鈕被按下時,以下被添加到數據庫中:

    < A HREF = 「文檔/ automatic_file_name.html」 > 「 scriptname_input」 < /一個>

凡加粗部分從生成的文件名,並採取斜體部分是從輸入字段...

這樣做的目的是爲了讓在搜索結果中,當數據庫列腳本名稱出現後,腳本名稱就是實際文件的鏈接。我已經準備好了搜索功能,並且可以從數據庫條目創建鏈接,但我只需要簡化上傳過程。

如果這是不可能的,是有不同的方式來實現這一目標?

---編輯---

謝謝大家的幫忙!非常感謝,我已經使用了幾個建議的組合。但是,由於他的解決方案是最接近的,我將信譽歸功於Ibere。

這裏是我用於該處理的上傳和數據庫添加「add.php」文件的最終代碼,以防萬一它再度出現(我對此表示懷疑):P

<?php 

$filename = md5($_FILES['content']['name']); 
$labelForUrl = $_POST['scriptname']; 
$url = "<a href=\"docs/$filename\">$labelForUrl</a>"; 
$target = "../docs/"; 

//This gets all the other information from the form 
$name=$_POST['scriptname']; 
$cat=$_POST['category']; 
$key=$_POST['keywords']; 
$link=$_POST['link']; 
$file=($_FILES['content']['scriptname']); 

// Connects to your Database 
mysql_connect("localhost", "username", "password") or 
die(mysql_error()) ; 
mysql_select_db("scripts") or die(mysql_error()) ; 

//Writes the information to the database 
mysql_query("INSERT INTO scripttable (scriptname,category,keywords,link,content) 
VALUES ('$url', '$cat', '$key', '$link', '$file')") ; 

if(move_uploaded_file($_FILES['content']['tmp_name'], $target . $filename)) { 
echo "The file ". $labelForUrl. 
" has been uploaded"; 
} 
else { 
    echo "There was an error uploading the file, please try again!"; 
    } 

?> 
+0

這些應該是對當前上傳腳本的小改動。你可以發佈該腳本嗎? – jeroen

回答

1

您可以爲文件名做這樣的事。

$filename = md5($_FILES['content']['name']); 

$labelForUrl = $_POST['scriptname']; 

md5不是隨機的,但足以生成文件名的不可讀字符串。
然後你就可以創建一個URL像這樣

<a href="docs/<?php echo $filename; ?>" ><?php echo $labelForUrl; ?></a> 

希望這有助於。

編輯:我忘了將擴展名添加到filname。所以,正確的代碼會是這樣的:

$filename = md5($_FILES['content']['name']).$_FILES['content']['type'] 
+0

乾杯!通過一些調整,我完成了這項工作......非常有幫助。 –

0

這非常簡單,如果你知道codeigniter(PHP框架)。

可以使用Upload Class

您可以輕鬆創建表單並提交,也顯示它們。

我會做這種方式。如果你熟悉MVC,你可以在10-15分鐘內完成。

1

我建議使用uploadify的上傳。但是,做你問:

$randomFileName = rand(1000, 9999); 
if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
else 
    { 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $randomFileName . $_FILES["file"]["type"]); 
    // update your db with the location 
    $loc = "upload/" . $randomFileName . $_FILES["file"]["type"];  
    mysqli_query("insert into `myTable` (`loc`) values ('$loc')"); 
    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
} 

對於文件上傳的幫助,看看http://www.w3schools.com/php/php_file_upload.asp

+0

感謝堆,這與我所需要的非常接近,但是,我還希望從表單中將腳本名稱作爲超鏈接上載,以便在搜索中找到腳本時,用戶將單擊腳本名稱並被帶到上傳的html文件中...爲了澄清,腳本名稱是插入到文本字段中的,而不是文件名稱,它被設置爲隨機的。這可能嗎? –

+0

您是否嘗試上傳與網頁相關的文件,然後生成或上傳指定其爲隨機名稱的網頁? – user1477388