|
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信息。
来源:C#社区
|