我們使用plupload爲用戶上傳文件到我們的VPS。爲什麼Request.Files.Count有時使用HTML5上傳器?
這裏是plupload代碼:
var uploader = new plupload.Uploader({
browse_button: 'fileSelectorLink',
container: 'uploadContainer',
drop_element: 'uploadbox',
url: '/UploadHandler.ashx',
unique_names: true,
multi_selection: false,
flash_swf_url: '/scripts/plupload/js/Moxie.swf',
silverlight_xap_url: '/scripts/plupload/js/Moxie.xap'
});
他是處理請求的代碼:
Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim runtime As String = If(context.Request("runtime") IsNot Nothing, context.Request("runtime"), "Unknown")
If context.Request IsNot Nothing Then
If context.Request.Files.Count > 0 Then
Dim fileUpload As HttpPostedFile = context.Request.Files(0)
...
Else
' Throw an exception
End If
End Sub
偶爾(時間約2%)的異常將拋出。下面是拋出一個錯誤的請求的示例:
Runtime: html5
Request.ContentType: multipart/form-data; boundary=----WebKitFormBoundaryo7JAtlhKsg8xDcQT
Request.ContentLength: 3758089
Request.ContentEncoding: System.Text.SBCSCodePageEncoding
Request.TotalBytes: 3179067
的錯誤似乎在不同瀏覽器和操作系統(甚至現代的瀏覽器)發生的,所以這似乎並不成爲問題。如果瀏覽器不處理異步文件上傳,Plupload應該回退到其他版本。我認爲ContentEncoding看起來很奇怪,但似乎總是說(也許plupload是這樣的?)。唯一跳出來的是ContentLength和TotalBytes不同,但在我的本地測試中它們是相同的。這可能是一個問題嗎?
一直困在這個問題上幾天,並沒有任何好的線索。
您是否一致測試相同的文件?如果不同的文件,是否有任何文件類型可能導致錯誤的模式? –
另外,我們可以看到實際的HTML嗎? –
我應該更清楚。這是在生產環境中,用戶正在上傳文件。大多數文件都是.ppt,.pptx或.pdf,但我們接受很多文件類型。我們不知道錯誤的文件類型。 HTML是plupload的標準配置,該插件完成了大部分繁重的工作。 – Khan