2013-04-24 74 views
0

在我的asp.net網站上,用戶可以上傳多個文件,這些文件位於服務器硬盤上的'upload'文件夾中。我通過用用戶名+原始文件名重命名文件來保存文件 例如:如果我上傳文件'user.text'並且我的代碼是1000,那麼文件將被保存在名稱爲'1000_user.Text'的上傳文件夾中。這是爲了識別針對特定用戶的文件。 現在,當管理員登錄應用程序並選擇一個用戶時,他應該能夠看到他/她上傳的所有文件。文件應該以可下載格式給他。如何使文件作爲asp.net中的下載鏈接提供?

我該怎麼做到這一點?我完全不知道,該怎麼去做?

+0

請查閱http://www.codeproject.com/Tips/185886/File-Upload-and-Download-in-ASP-NET – 2013-04-24 09:44:03

+1

http://www.aspdotnet-suresh.com/2012/02/saveupload -files功能於文件夾和download.html – 2013-04-24 09:45:25

回答

0

這不是你如何問一個關於SO的問題。無論如何已經有一條建議:

  1. 存儲您的文件在webroot外部,並使用您的網站腳本獲取文件並呈現給用戶。這是出於安全原因:如果有人設法上傳惡意文件,則不希望他能夠通過網絡執行它。
  2. 將文件信息和上傳信息存儲在數據庫中:誰上傳了什麼和何時?依靠文件名不是一個好主意。您也可以將文件最終存儲在數據庫中(作爲BLOB),但我更喜歡舊的文件系統
0

我可以根據可行性向您建議幾種方法。方法1 - 如果您可以進行數據庫更改,則當用戶上傳文件時,應該在數據庫中針對用戶保存動態生成的文件名。通過這種方式,當管理員登錄並希望查看用戶上傳的所有文件時,只需要進行數據庫查詢並將其顯示在網格中即可。當用戶點擊文件名時,您可以從硬盤獲取文件並允許它下載到管理員。

如果數據庫更改不可行,您的任務將更加困難。您必須在所有文件中使用用戶名在您的目錄中進行查詢。你可以使用LINQ來讓你的任務變得更容易。一旦你有了所有的名單,把它展示給管理員。

0

我會建議你保存有關數據庫文件的元數據(如原始文件名和用戶名)。然後,您可以使用此元數據查找用戶上傳的文件。爲磁盤上的文件提供基於數據庫表中唯一標識的文件名。這樣用戶可以上傳具有相同名稱的多個文件。確保該文件夾不在您的應用程序中,以便出於安全原因可以使用url訪問它們。

0

最推薦的方式實現這一目標是使用一個數據庫,它是同畫廊的模塊在用戶已經專輯和專輯中的一些照片。管理員可以查看每個用戶的相冊和相冊中的圖片。你必須在你的數據庫中引入兩個表。我有被上傳(主表)等表文件的類別信息具有關於文件本身(詳細信息表)的信息。

的另一種方法是爲每個用戶創建的應用程序中的文件類別採用了層級的文件夾目錄,然後遞歸讀取目錄和字段,然後列出他們,向他們展示給應用程序的用戶。這將是昂貴的我想,當文件的數量將會增加。