我实现了plupload ajax uploader,用于在asp.net应用程序中上传视频和音频文件。它在除IE之外的所有其他浏览器上工作正常(在9.0上测试),使用Flash作为运行时。
这是我在IE上收到的屏幕截图,当时使用flash作为运行时。
以下是我正在使用的示例代码。
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以外的所有浏览器上都能正常工作。任何人都可以帮助解决这个问题的原因。
答案 0 :(得分:1)
最后我发现这是由flash player 11引起的,它冻结了pluploader提供的现有.swf文件。
升级到plupload论坛上的最新补丁.swf文件时。
http://www.diverse-tech.net/plupload_ex/plupload.flash.swf
它通过Flash运行时修复了上传问题。