读书人

页面文件上传-文件选择器怎么限定文件

发布时间: 2013-10-29 12:07:57 作者: rapoo

页面文件上传--文件选择器如何限定文件类型
想要的效果是:在点击文件上传后,弹出的文件选择框下面的文件类型我是可以限定的,就是我要它出现什么格式它就只能出现什么格式,<input /> 的accept属性不给力啊!
我看网上说如果想去灵活的去控制文件选择器,除非你不要用浏览器自带的,而是自己写一个!!!
我又上网查说可以用applet在浏览器调java的文件选择器(因为我是学java的,就想着用java),可到这儿我不会了,我没用过applet啊,哪位大哥给个思路啊,或者什么例子的,能够让小弟直观快速的了解到怎么用这个东西,从而实现上面我要的效果!!
当然如果不用这么麻烦就能实现我说的效果我更是欢迎的,谢谢
[解决办法]
我刚才也搜了下,我其实也挺需要这个功能的。
大体上就两种方法吧,
第一种:使用swfupload,网址:http://code.google.com/p/swfupload/
第二种:使用人家写好的组件,适用java,
http://download.csdn.net/detail/s478853630/4063293
(还没用过,不确定是否好用,下班后回去试试)
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

看看这个:http://blog.csdn.net/withiter/article/details/7272338


<!--ready事件-->
<script type="text/javascript">
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : 'scripts/uploadify.swf',
'script' : 'servlet/Upload',//后台处理的请求
'cancelImg' : 'images/cancel.png',
'folder' : 'uploads',//您想将文件保存到的路径
'queueID' : 'fileQueue',//与下面的id对应
'queueSizeLimit' : 5,
'fileDesc' : 'rar文件或zip文件',
'fileExt' : '*.rar;*.zip', //控制可上传文件的扩展名,启用本项时需同时声明fileDesc
'auto' : false,
'multi' : true,
'simUploadLimit' : 2,
'buttonText' : 'BROWSE'
});
});
</script>

大哥我用了这个,现在功能全部实现了,但是有个小问题就是,我想把文件选择按纽居中,可是它默认一直是贴左边的,用那个buttonClass属性设margin属性也调不过来啊,有什么办法可以把它放到我想它在的地方啊,就像咱对一个自定义的按纽设置它的布局那样??求赐教!!!!


可以改下自带的css文件。就是改你刚说的class
还是搞不定,我晚上帮你看下。


我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵

截个图看看,或者你能对外发布下你的访问地址么?我用firebug帮你调试试试


谢谢大哥了,我已经找到在哪里改样式去把那个按钮居中了;不过现在又有一个新问题啊,我上传excel完成后,是有一个导入数据库的操作的,当操作成功或失败时都会返回相应的提示信息(在action类中把消息添到request,之后转到一个消息页面,显示提示信息),但现在上传完成后页面就停在那个上传页面了,不刷新啊,我的消息页面也出不来了。怎么让它刷新呢?


看看官方的API,上传完了之后是有回调函数的,你可以在回调函数里再发个请求:



<!--ready事件-->
<script type="text/javascript">
$(document).ready(
function() {

$("#uploadify").uploadify(
{
'uploader' : 'uploadify/uploadify.swf',
'script' : 'fileUpload.html;jsessionid=<%=session.getId()%>',//后台处理的请求


'cancelImg' : 'images/cancel.png',
'folder' : 'uploads',//您想将文件保存到的路径
'queueID' : 'fileQueue',//与下面的id对应
'queueSizeLimit' : 5,
'fileDataName' : 'uploadify',
'fileDesc' : '视频、图像、文本文件',
/*
'fileExt' : '*.BMP;*.JPG;*.JPEG;*.PNG;*.GIF;'+
'*.AVI;*.WMV;*.FLV;*.MKV;*.MOV;*.3GP;*.MP4;*.MPG;*.MPEG;*.RM;*.RMVB;*.TS;*.SWF;'+
'*.MP3;*.WAV;*.WMA;*.MID;*.MKA;*.WV;'+
'*.TXT',
*/
'fileExt' : '*.BMP;*.JPG;*.PNG;*.GIF;'+
'*.MP4;*.MPEG;*.MPG;'+
'*.TXT',


'auto' : false,
'multi' : true,
'simUploadLimit' : 2,
'buttonText' : 'BROWSE',
'onError' : function(event, ID, fileObj, errorObj) {
alert(errorObj.type + ' Error: '+ errorObj.info);
},
'onSelect' : function(e, queueId, fileObj) {
if(fileObj.name.length > 50){
alert("文件名长度(包括后缀)不能超过50个英文字符(一个中文字符占2个英文字符),请重命名后重新选择,否则将无法使用此文件!");
//$("#uploadify").uploadify("cancel","*");
}
},
'onAllComplete' : function(event,data) {
alert(data.filesUploaded + '个文件上传成功,'+"平均上传速度为:"+data.speed+"KB/s,"+"上传文件的总大小为:"+data.allBytesLoaded+"KB" );


}

});
});
</script>



用onUploadSuccess(file, data, response)方法中的data,我得到了我返回的“消息页面”的字符串表示,在该方法中我用document.write(data)就实现了页面的刷新到“消息页面”,但这个效果只在ie下可用,在谷歌下就显示网页崩溃,是不是直接把一个页面的字符串直接这么写到document.write()里是不规范的啊,谷歌不支持,但ie勉强还能用。
要怎么把一个网页的字符格式刷新成页面呢?


你是指用js方法把服务器端的数据显示到页面上?
用jquery吧比如$("#id").text(xxx);
jquery封装的比较好了,兼容性也好,原生js的话,各厂家支持有的是不一样的

读书人网 >J2EE开发

热点推荐