关于上传插件uploadify使用问题


uploadify上传插件官网例子为PHP,但是java使用同样无碍。

主要使用文件为js,css,swf,以及一个uploadify-cancel.png的图片,使用时的常用参数设置为:

<span style="white-space:pre">	</span><input type="file" name="file_upload" id="file_upload_1" />
<pre name="code" class="javascript">	$("#file_upload_1").uploadify({
		"auto":true,	//自动上传
		"height" : 20,
		"fileObjName" : "imgFile",	//文件上传对象的名称
		"swf" : "${ctx}/uploadify/uploadify.swf",	//uploadify.swf 文件的相对路径。
		"uploader" : "${ctx}/bgAdmin/breed/upload",	//后台处理程序的相对路径。
		"width" : 100,
		"multi":false,	//设置为true时可以上传多个文件。
		"buttonImage": "${ctx}/uploadify/browse-btn.png",	//浏览按钮的图片的路径 。
		"fileTypeDesc" : "Image Files",	//这个属性值必须设置fileTypeExts属性后才有效,用来设置选择文件对话框中的提示文本
        <span style="white-space:pre">	</span>"fileTypeExts" : "*.gif; *.jpg; *.png",	//设置可以选择的文件的类型
        <span style="white-space:pre">	</span>"buttonText":"请选择文件",	//浏览按钮的文本。
		"onUploadComplete" : function(file) {	//每个文件上传完毕后无论成功与否都会触发。
            <span style="white-space:pre">		</span>//alert("Flash was not detected."+file.name);
        <span style="white-space:pre">	</span>},
        <span style="white-space:pre">	</span>"onUploadSuccess" : function(file,data,response){	//当文件上传成功时触发
        	<span style="white-space:pre">	</span>var obj = jQuery.parseJSON(data);
        	<span style="white-space:pre">	</span>if(obj.error == "0"){
        		<span style="white-space:pre">	</span>$("#breedImg").attr("src","${ctx}/"+obj.url);
        		<span style="white-space:pre">	</span>$("#breedImgHidden").val(obj.url);
        	<span style="white-space:pre">	</span>}
        <span style="white-space:pre">	</span>}
	});


 

uploadify插件使用时注意事项(主要针对3.2,3.1版本,其他版本未测试)

1.uploadify 3.1 /3.2进入页面请求两次问题解决办法。

最近在做MVC项目的时候有用到 uploadify,但是在进入页面的时候会有请求两次的问题,明显为js方法初始化时部分参数未设置或js代码本身BUG

具体解决方法是(js文件中,原因为settings.upload_url未设置,但是文件中并未对未设置的情况进行处理):

this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url)

改为

this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url = this.settings.button_image_url ? SWFUpload.completeURL(this.settings.button_image_url) : this.settings.button_image_url

2. uploadify在谷歌浏览器上总会崩溃的解决方法

在使用测试时,发现在谷歌浏览器测试总是会出现页面崩溃。

解决的办法是: 给引入的js加上一个参数,时间戳就可以,防止缓存,使每一次都请求。(这个问题是因为谷歌浏览器会缓存文件导致的)

<script type="text/javascript" src="../common/uploadify/jquery.uploadify.js?f=<%=System.currentTimeMillis()%>"></script>

网上还有这些:

根据stackoverflow上的帖子,

  • Asp.Net Web From

    <script src="/Resources/uploadify/jquery.uploadify3.1Fixed.js?ver=<%=(new Random()).Next(0, 99999).ToString() %>" type="text/javascript"></script>
  • Asp.Net MVC

    <script type="text/javascript" src=@Url.Content("~/Content/uploadify/jquery.uploadify3.1Fixed.js?ver=")@DateTime.Now.Ticks></script>
  • PHP

    <script src="js/jquery.uploadify.min.js?ver=<?php echo rand(0,9999);?>" type="text/javascript"></script>


3.火狐浏览其中使用uploadify时的session丢失

使用过程中,因为牵扯权限控制,使用uploadify上传时经过了拦截器取得session,发现该session与当前页面访问的session并不是同一个,原因是sessionId发生了改变,这样导致在session中无法取得用户信息。


其解决办法在网上也找了良久,大部分的回答是在参数中添加sessionID,但是这种方法不仅有严重的安全隐患,而且由于使用java web开发,自从servlet1.2以后就不在支持sessionContext.getsessionId这样的方法了,想要在代码中根据sessionid取得session,必须手动编写添加session监听,过程也稍显麻烦。官网中对这个情况也有解释,由于官网使用PHP的例子,所用方法也是使用上述类似方法,使用sessionid来获得session。本身认为这种方法实在不可取。

其他变通方法可使用加密串确定登陆用户,不过如果系统本身对安全性的考虑不甚严格,可以直接将此问题跳过或使用其他上传插件和方法。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值