我希望管理員能夠將 pdf 文件上傳到一個唯一的目錄,該目錄包含一個僅允許管理員查看 pdf 的 webconfig 文件。
當 pdf 準備好向公眾發佈時,管理員會適當地標記它,代碼隱藏會修改 webconfig 使其公開。
我需要它在運行時運行。
我的想法是有一個帶有私有 webconfig 的模板目錄。Web 管理員上傳 pdf 它將模板目錄和 webconfig 複製到新位置,然後插入 pdf。準備好發布後,管理員設置一個標誌,代碼將 webconfig 更改為 public。再次全部在運行時。
這裡的重點是,pdf 的路徑一旦上傳就永遠不會改變。
我找到了複製目錄和修改 webconfig 的代碼。問題是在運行時將 webconfig 文件從一個位置複製到另一個位置。
示例 webconfig(私有)
<configuration>
<system.web>
<authorization>
<allow roles="private" />
<deny users ="*" />
</authorization>
</system.web>
</configuration>
示例 webconfig(公共)
<configuration>
<system.web>
<authorization>
<allow roles="public" />
<deny users ="*" />
</authorization>
</system.web>
</configuration>
如前所述,如果不需要靜態 URL,那麼您可以提供“我的文件”或其他內容的鏈接,然後顯示在網格中。
您可以只為管理員用戶保護說 UploadFiles 或任何文件夾。然後提供這樣的網格:
並且通過使用數據庫,每個客戶上傳和分類文件(如果這是您想要的)要容易得多。
然後數據庫行中的一個簡單標誌或設置控制是否讀取文件供用戶查看(或下載)。
在上面,如果您單擊 PDF 文件預覽,那麼我將文件(流)下載給用戶。
代碼很像這樣:
Dim btnLink As ImageButton
btnLink = sender
Dim strInternalFile = btnLink.Attributes("iFile")
Dim binFile() As Byte
Dim strConType As String = ""
If File.Exists(strInternalFile) Then
strConType = MimeMapping.GetMimeMapping(strInternalFile)
binFile = File.ReadAllBytes(strInternalFile)
Response.ContentType = strConType
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strInternalFile))
Response.BinaryWrite(binFile)
'Response.WriteFile(strWebUrl)
Response.End()
所以上面只是將文件下載到用戶瀏覽器。
如前所述,如果需要靜態鏈接,因此文件不會按“每個用戶”或“每次登錄”分發,那麼您可以擁有一個顯示“就緒”文檔或“可用文檔列表”的登錄頁面作為 URL,但隨後會顯示某種類型的 UI 或網格顯示(如上),然後用戶單擊某個按鈕以“下載”文件。
我認為嘗試破解網絡配置沒有意義。這將如何與多個用戶一起使用?已經加載的頁面將緩存這些設置。總而言之,試圖弄亂網絡配置,並在多用戶環境中工作,我認為這行不通。
折騰緩存問題,以及其他各種事情?如果有一些文件用戶是看還是看不到?然後提供一個用戶界面,而不是文件的簡單 URL - 這將極大地提高站點的安全性。
然後數據庫系統成為用戶的管理系統 - 而不是一些網絡配置,無論如何都不會真正為每個用戶提供對該過程的任何類型的控制。即使您總是基於用戶登錄“ID”創建一些新文件夾,那麼現在必須構建一些管理頁面,您需要一種簡單的方法來打開或允許用戶獲取和查看某些文件一些用戶界面和軟件交互,可以簡單地“更新”數據庫中的標誌或設置。
我只是不知道如何通過嘗試弄亂 web.config 來實現可行的工作流程,而且我什至不確定已經緩存的頁面等是否會正常工作。
我不會走那條路——這裡的黑客方法太多了。
我還在數據庫中添加了一個帶有 GUID 列的額外列。所以我可以提供一個帶有指向文件的 GUID 的 URL。我從 URL 中獲取 GUID,獲取一行,現在我可以通過將 User_ID 存儲在該數據庫行中來檢查該文件所有者。因此,現在登錄的用戶只能獲取屬於他們的自己的文件。當然,添加“管理員批准”標誌或不顯示/允許該用戶使用和查看文件的內容很簡單。
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras