plupload

多附件上传控件plupload的使用心得

在使用uploadify遇到问题时,去求救过plupload控件,使用uploadify所遇到的问题,可以看我的其他文章。plupload控件能解决我在使用uploadify时遇到的几个问题,唯一让我不能选用它的一个原因就是它不支持IE6,虽然现在IE6已经逐渐淘汰,不过可惜我做的是一个老项目,系统推荐使用的就是IE6,所以在此把使用plupload的一些心得贴上,如果以后做新系统可以用上。

它的官网地址:http://www.plupload.com/index.php

貌似官网地址都不支持IE6打开,呵呵。

我使用的是1.5.4版本

官网上有该控件的详细使用说明。我一下贴出的只是根据我项目需要所做的一些属性。

在页面上添加引用

<script type="text/javascript" src="../js/plupload.js"></script>
<script type="text/javascript" src="../js/plupload.gears.js"></script>(不需要可以去掉)
<script type="text/javascript" src="../js/plupload.silverlight.js"></script>(不需要可以去掉)
<script type="text/javascript" src="../js/plupload.flash.js"></script>(不需要可以去掉,我项目中需要用)
<script type="text/javascript" src="../js/plupload.browserplus.js"></script>(不需要可以去掉)
<script type="text/javascript" src="../js/plupload.html4.js"></script>(不需要可以去掉)
<script type="text/javascript" src="../js/plupload.html5.js"></script>(不需要可以去掉)

var uploader = new plupload.Uploader({

runtimes : 'flash',  //官网上默认是gears,html5,flash,silverlight,browserplus

browse_button : 'uploadify', //这个是点击上传的html标签的id,可以a,button等等

container: 'container', //这个是容器的地址,

max_file_size : '10mb', //这是文件的最大上传大小,得跟IIS结合使用

url : '/uploadhandler.aspx?' +'param1=value' , //服务器页面地址,后面跟你想传递的参数

flash_swf_url : '/js/plupload/plupload.flash.swf',  //flash地址

filters : [ {title : "网页文件", extensions : "htm,html"} ], //文件过滤

multipart:false // 官网的解释是设置传递到后台服务中的数据流结构,false的时候使用正常的字节流,如果为true,则使用mutlipart格式,可能是为了实现大附件分段上传的功能
如果设置了multipart:true,则你可以附加使用multipart_params参数去传递参数而不用像我这样通过在服务地址后面加参数。还有一些其他的属性,诸如chunk_size,resize(该属性能压缩图片,所以该控件对图片上传很有好处,推荐使用)可以查看官网的文档。如果你想简单的传递附件然后浏览,最好设置multipart:false,因为当你设置为true之后,你在后台中获取的流格式会有点问题,我本人的经验就是使用了true上传了一个html文档到数据库后,用

                    Response.ContentType = "text/html";
                    Response.BinaryWrite(body);
                    Response.Flush();
                    Response.Close();
                    Response.End();

这种方式查看附件时,直接打开的HTML页面会掺杂一些未能解析的流信息。

});

//文件添加时,会在容器里显示待上传的文件列表

uploader.bind('FilesAdded', function(up, files) { for (var i in files) { $('filelist').innerHTML += '

' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ')

'; } });

//文件上传的进度

uploader.bind('UploadProgress', function(up, file) { $(file.id).getElementsByTagName('b')[0].innerHTML = '' + file.percent + "%"; });

//文件上传成功后的总计

uploader.bind('UploadComplete',function(up,files){ $('filelist').innerHTML="您选择的文件已经全部上传,总计共"+files.length+"个文件"; });

// 这是一个选择完成后的上传按钮。点击按钮后,附件才开始上传

$('ibtMultiSubmit').onclick = function() { uploader.start(); return false; };

uploader.init();

后台服务页面的代码:

网上有人使用这种方式:

     Byte[] buffer = null;
        if (Request.ContentType == "application/octet-stream" && Request.ContentLength > 0)
        {
              buffer = new Byte[Request.InputStream.Length];
              Request.InputStream.Read(buffer, 0, buffer.Length);
        }
        else if (Request.ContentType.Contains("multipart/form-data") && Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
        {
            buffer = new Byte[Request.Files[0].InputStream.Length];
            Request.Files[0].InputStream.Read(buffer, 0, buffer.Length);
        }

来获取附件内容,我基本也是借鉴他的,获取参数就使用Request.Params["param1"]即可。

获取到后,做自己的业务处理即可。

使用该控件时遇到的唯一问题就是multipart:为true和false时,获取的流不同。并且它貌似不像uploadify那样提供动态获取参数的功能,所以如果某些想要传递到后台的参数不是页面初始化时设定的,可以考虑变换方式,比如在设置好参数的时候,触发事件再次初始化控件即可。该控件除了对IE6不支持,其他浏览器都支持得挺好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
plupload是一个基于HTML5和Flash技术的开源文件上传组件,它不仅可以用于上传文件,还可以用于下载文件。 使用plupload进行下载,首先需要构建一个下载按钮,并为其绑定点击事件。当用户点击下载按钮时,可以通过调用plupload的API方法,向服务器发送下载请求。服务器收到下载请求后,可以将对应的文件发送给客户端进行下载。 在plupload中,可以使用settings对象的url属性来指定下载的服务器地址。可以自定义一个下载接口,当plupload发送下载请求时,该接口负责根据请求中的参数,获取文件的路径,读取文件内容,并发送给客户端进行下载。 例如,构建一个下载按钮的示例代码如下: ```html <button id="downloadBtn">下载文件</button> <script src="plupload.js"></script> <script> // 绑定下载按钮点击事件 document.getElementById('downloadBtn').addEventListener('click', function() { // 使用plupload的API方法发送下载请求 plupload.addFile({ name: 'filename.ext', // 文件名 url: 'download.php' // 下载接口地址 }); }); </script> ``` 在download.php文件中,可以获取到plupload发送的下载请求,根据请求中的参数,读取对应的文件,并将文件内容发送给客户端。下载文件的代码如下: ```php <?php $filename = $_GET['filename']; // 获取下载文件名 // 设置响应头信息,告诉浏览器下载文件 header('Content-Disposition: attachment; filename='.$filename); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: '. filesize($filename)); // 输出文件内容 readfile($filename); ?> ``` 以上就是使用plupload进行文件下载的简单示例。当用户点击下载按钮时,plupload将发送下载请求到download.php接口,该接口会读取文件内容并发送给客户端,实现文件下载功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值