2

我实现了 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 之外的所有浏览器上都能正常工作。任何人都可以帮助解决这个问题的原因。

4

1 回答 1

1

最后我发现这是在 flash player 11 中引起的,它冻结了 pluploader 提供的现有 .swf 文件。

升级到 plupload 论坛上的最新补丁 .swf 文件时。

http://www.diverse-tech.net/plupload_ex/plupload.flash.swf

它通过 Flash 运行时修复了上传问题。

于 2012-11-27T14:27:24.493 回答