我实现了 plupload ajax 上传器,用于在 asp.net 应用程序中上传视频和音频文件。除了使用 Flash 作为运行时的 IE(在 9.0 上测试)之外,它在所有其他浏览器上都能正常工作。
这是我在使用 Flash 作为运行时时在 IE 上收到的屏幕截图。
这是我正在使用的示例代码。
var uploader = new plupload.Uploader({
runtimes: 'gears,html5,flash,silverlight,browserplus',
browse_button: 'MC_uploader_v31_pickfiles',
container: 'container',
max_file_size: '1000mb',
url: 'http://localhost/vuploader/videos/upload/upload.ashx',
flash_swf_url: 'http://localhost/vuploader/plupload/js/plupload.flash.swf',
silverlight_xap_url: 'http://localhost/vuploader/plupload/js/plupload.silverlight.xap',
//chunk_size: '4mb',
//unique_names: true,
filters: [
{ title: 'Media Files', extensions: 'mp4,wmv,mpeg,mpg,flv,avi,rm,mov,m4v,dv,ogg,ogv,webm'}],
headers: { UName: '', MTP: '0' }
});
这是上传处理程序代码示例。
int chunk = context.Request["chunk"] != null ? int.Parse(context.Request["chunk"]) : 0;
string fileName = context.Request["name"] != null ? context.Request["name"] : string.Empty;
HttpPostedFile fileUpload = context.Request.Files[0];
using (var fs = new FileStream(Path.Combine(uploadPath, fileName), chunk == 0 ? FileMode.Create : FileMode.Append))
{
var buffer = new byte[fileUpload.InputStream.Length];
fileUpload.InputStream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
}
代码在除 IE 之外的所有浏览器上都能正常工作。任何人都可以帮助解决这个问题的原因。