ASP.NET项目中应用到Uploadify上传插件,在后台接受文件进行身份的登录验证时,无法获取Cookie和Session,起初只能使用无验证状态上传,这样无疑给安全性带来严重的后果。
项目中Uploadify版本:2.1.4,下面将讲述实现获取Cookie的方法。
1.在前端页面获取Cookie内容, 将Cookie内容放在scriptData中,在上传文件进行提交的时候,Cookie作为表单参数一起传递。
<script type="text/javascript"> $(document).ready(function () { $('#upfiles').uploadify({ 'scriptData': { 'cookie': '这里放入Cookie内容' }, 'uploader': 'uploadify/v2.1.4/uploadify.swf', 'cancelImg': 'uploadify/v2.1.4/cancel.png', 'buttonImg': 'uploadify/v2.1.4/upload-image.png', 'width': 80, 'height': 25, 'buttonText': '选择文件', 'script': 'Upload.ashx', 'fileDataName': 'filedata', 'fileDesc': '*.jpg;*.jpeg;*.gif;*.png;', 'fileExt': '*.jpg;*.jpeg;*.gif;*.png;', 'sizeLimit': 1024 * 1024 * 6, // 文件大小限制 6M 'simUploadLimit': 10, 'multi': false, 'auto': true, 'onComplete': function (vent, queueId, fileObj, response, data) { //上传成功 concole.log(jQuery.parseJSON(response)); }, 'onError': function (event, queueId, fileObj, errorObj) { //错误时触发 //错误的类型,有三种'HTTP', 'IO', or 'Security' //错误的描述 if (fileObj.size > iMaxFileSize) { setTimeout('$("#upfiles").uploadifyCancel(' + queueId + ')', 2000); } } }); }); </script> <!--/Uploadify-->2.Upload.ashx页面中获取Cookie参数值,context.Request.Form["cookie"]
Uploadify v2.1.4使用的是flash进行文件上传,后台无法直接读取Cookie和Session,只能将Cookie作为表单参数一起传递,虽然需要额外的逻辑处理,但是可以解决用户登录验证问题。
以上是Cookie获取的解决办法,如果使用的是Session,将表单参数内容更换为SessionId,后端再通过SessionId获取服务端Session信息。