我看過Silverlight上傳示例here多次在本網站和其他地方引用,但我對它是否真的安全有疑問。Silverlight文件上傳:這是安全嗎?
快速審查:此代碼不會「分塊」上傳到ASHX處理程序。 UploadFileChunk()實例化WebClient並使用OpenWriteAsync和OpenWriteCompletedEventHandler從文件發送一些位。 WebClient使用帶有兩個QueryString參數的URI與處理程序進行通信:「filename」和「append」。將塊中的位寫入WebClient的輸出流後,事件處理程序檢查是否已發送所有位,如果不是,則再次調用UploadFileChunk()以發送另一個塊。
在服務器端,處理程序很簡單 - 使用FileStream將位寫入磁盤,如果append = 1則附加,如果append = 0則創建新的位。
這種架構看起來很可能導致問題。服務器是否保證在接收到下一個請求之前寫完位並關閉文件流並開始追加下一個塊的位?我對Silverlight方面的OpenWriteCompletedEventHandler的理解是,當您完成寫入操作並關閉流時,並不一定意味着這些位已經通過線路發送,更不用說由服務器端處理程序處理了。
謝謝!