2012-01-24 120 views
0

我想保存一個jpeg圖像在上傳文件夾中有正確的權限設置。當我測試文件正在保存時(例如:images/uploads/Winter.jpg),但如果我嘗試在瀏覽器中查看圖像,或者如果我嘗試使用其他任何方法打開圖像,圖像將不會顯示。asp.net圖像jpeg沒有正確保存

我認爲文件在保存到磁盤之前沒有被正確編碼,但在處理保存文件,編碼方面並不是很有經驗。下面的代碼看起來不錯,還是需要在將文件保存到磁盤之前以某種方式對要上傳的文件進行編碼?

String imgPath = "newsletter\\images\\uploads\\"; 

String filename = System.IO.Path.GetFileName(upload.PostedFile.FileName); 

filepath = imgPath + filename; 

filepath = Request.PhysicalApplicationPath + filepath; 
upload.PostedFile.SaveAs(filepath); 

該文件保存到正確的文件夾,但只有150bytes的大小。如果我嘗試瀏覽該文件並使用圖像查看器查看它,則無法正確顯示。

+0

文件大小是多少?你有沒有在按鈕點擊事件? –

+0

當你直接瀏覽到服務器上的文件夾是那裏的圖像?你可以用圖像查看器查看它嗎? – Oded

+0

@ShadowWizard - 通過將FileUpload控件作爲「upload」傳遞給saveImage函數,從另一個函數調用該函數。 – TGuimond

回答

1

編碼不應該是一個問題 - 原始數據不會改變。但是,在保存數據之前,瀏覽器可能不會發送所有數據,或者上傳控件正在刪除數據。

確保您撥打前.SaveAs()的頁面開始卸載,並之前任何額外的回傳。我想我們需要看到更多的周邊代碼來進一步提高。

另一個注意事項 - 通過允許使用現有的文件擴展名,您允許用戶上傳.aspx文件,隨後可以通過請求執行.aspx文件。安全文件名是GUID和白名單文件擴展名。使用未經過清理的上傳路徑信息非常危險。如果您重新使用文件名,請將其清除爲字母數字。