以防萬一,我正在創建處理 excel 的函式,并且在程序結束時,我想將 excel 保存到我電腦中的“下載”檔案夾中。但是我的電腦和服務器之間的檔案夾路徑不同。當我使用我的電腦運行我的應用程式,我得到路徑“C:/Users/MyPCUserName/Downloads”但是當我在已發布檔案(iis 服務器)上運行應用程式時,我得到路徑“C:\Users\SYSTEM\Downloads\85FE1000”..我不知道我的代碼/功能有什么問題..
這是我的代碼:
Private Sub myMethod(ByVal pProjectNo As String, ByVal pOrderNo As String)
Dim dt As DataTable = ClsUploadBreakDownInquiryDB.GetFinalInspectionData(pProjectNo, pOrderNo)
if dt.Rows.Count > 0
'My Function Here
Dim user As String = System.Environment.UserName
exl_b2.SaveAs("C:\Users\" & user & "\Downloads\" & pProjectNo & "_" & Microsoft.VisualBasic.Format (Date.Now, "yyyyMMdd_HHmmss") & ".xlsx", Excel.XlFileFormat.xlOpenXMLWorkbook)
End If
End Sub
uj5u.com熱心網友回復:
您可以將上傳的檔案保存在您的網路服務器上幾乎任何您想要的地方。
但是,如果您談論的是客戶端用戶 - 以及他們的瀏覽器下載位置?你有零,但 100% 零控制那個位置。
事實上,用戶可能使用的是 iPhone 或 Android - 甚至不是臺式計算機。
在任何情況下,您都無法控制用戶下載檔案的位置。本地計算機上的檔案 100% 無需手動操作。當他們下載時,它通常會轉到他們的下載檔案夾 - 但用戶設定控制著它。
您無法在客戶端計算機上抓取、查看或設定任何檔案位置。我的意思是,如果你能做到這一點,那么當你來我的網站看貓的照片時?然后我的代碼會在你的計算機上翻找——尋找稱為密碼的檔案或稱為銀行等的檔案并竊取它們
那么,服務器端代碼落后了嗎?當然,在大多數情況下,您可以將檔案保存在您喜歡的任何位置的網路服務器計算機上——這并不重要。
但是,如果您談論的是用戶的客戶端計算機位置以及他們的瀏覽器訪問您的網站?不,您擁有零資訊,對用戶檔案的零控制,甚至他們選擇保存或下載此類檔案的位置 - 即他們的計算機 - 并且瀏覽器出于安全原因提供保護。
在開發程序中使用 Visual Studio 時,這有時會讓人感到困惑,因為您的計算機、瀏覽器和網站都在同一臺計算機上運行,??但在典型的部署中,情況當然不是這樣。因此,后面的代碼對用戶本地檔案系統的了解為零。
因此,您無法在客戶端計算機上獲取或設定任何型別的檔案位置資訊。
因此,使用后面的代碼保存到“用戶”僅適用于 Web 服務器“用戶”后面的代碼,與客戶端用戶無關。
作為一般規則,您在代碼后面使用和使用的任何和所有檔案夾?在每種情況下,它都應該是專案根目錄的子檔案夾。
記住:
Any markup code - urls - that is relative to your web site
Any code behind - plane jane windows path name.
因此,如果您在專案中添加一個檔案夾,則可能是檔案夾 UpLoadFiles。
所以,那么基于網路,基于標記將是這樣的:
https://localhost:44392/UpLoadFiles/doc.pdf
因此,UpLoadFiles 只是您專案中的一個子檔案夾。
但是,在后面的代碼中,您的代碼始終使用平面簡有效的 Windows 檔案名。那么,要將上面轉換為Windows中的平面簡檔案路徑嗎?你做這個:
Dim strFile As String = Server.MapPath("~/UpLoadFiles/abc.txt")
Dim strText As String = File.ReadAllText(strFile)
此時,現在 str 檔案是一個平面簡有效的完整老式 windows 檔案名。
所以,后面的代碼=總是平面簡視窗路徑名
因此,Web 標記和 URL = 始終是專案根目錄的相對路徑。
dim strTextFile = File.ReadAllText(strFile).
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/455655.html
