想要的效果是:在点击文件上传后,弹出的文件选择框下面的文件类型我是可以限定的,就是我要它出现什么格式它就只能出现什么格式,<input /> 的accept属性不给力啊!
我看网上说如果想去灵活的去控制文件选择器,除非你不要用浏览器自带的,而是自己写一个!!!
我又上网查说可以用applet在浏览器调java的文件选择器(因为我是学java的,就想着用java),可到这儿我不会了,我没用过applet啊,哪位大哥给个思路啊,或者什么例子的,能够让小弟直观快速的了解到怎么用这个东西,从而实现上面我要的效果!!
当然如果不用这么麻烦就能实现我说的效果我更是欢迎的,谢谢
我看网上说如果想去灵活的去控制文件选择器,除非你不要用浏览器自带的,而是自己写一个!!!
我又上网查说可以用applet在浏览器调java的文件选择器(因为我是学java的,就想着用java),可到这儿我不会了,我没用过applet啊,哪位大哥给个思路啊,或者什么例子的,能够让小弟直观快速的了解到怎么用这个东西,从而实现上面我要的效果!!
当然如果不用这么麻烦就能实现我说的效果我更是欢迎的,谢谢
var str='xxx.png';
var d=/[^\.]+$/.exec(str);
alert(d);
大体上就两种方法吧,
第一种:使用swfupload,网址:http://code.google.com/p/swfupload/
第二种:使用人家写好的组件,适用java,
http://download.csdn.net/detail/s478853630/4063293
(还没用过,不确定是否好用,下班后回去试试)
<!--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>
还是搞不定,我晚上帮你看下。
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用firebug帮你调试试试
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用firebug帮你调试试试谢谢大哥了,我已经找到在哪里改样式去把那个按钮居中了;不过现在又有一个新问题啊,我上传excel完成后,是有一个导入数据库的操作的,当操作成功或失败时都会返回相应的提示信息(在action类中把消息添到request,之后转到一个消息页面,显示提示信息),但现在上传完成后页面就停在那个上传页面了,不刷新啊,我的消息页面也出不来了。怎么让它刷新呢?
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用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>
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用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勉强还能用。
要怎么把一个网页的字符格式刷新成页面呢?
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用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的话,各厂家支持有的是不一样的
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用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的话,各厂家支持有的是不一样的
现在我是拿到一个消息页面的,在data里,我想着是直接用这个data里的页面把当前下载页面替换了,是全部换成另一页面;刚刚我又测了下,只要我调document.write("x");谷歌就崩溃了,真是不知怎么回事!
还是搞不定,我晚上帮你看下。我改了,好像把什么背景色之类的都改了,就是这个位置我弄半天也没弄过来;如果大哥能帮忙真是太感谢了,我觉得人家一定是可以的,只是我有些菜了,我也再自己看看,要能弄出来就不劳烦大哥你了!呵
截个图看看,或者你能对外发布下你的访问地址么?我用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的话,各厂家支持有的是不一样的
现在我是拿到一个消息页面的,在data里,我想着是直接用这个data里的页面把当前下载页面替换了,是全部换成另一页面;刚刚我又测了下,只要我调document.write("x");谷歌就崩溃了,真是不知怎么回事!找到了,我把谷歌里的一个用于自定义快捷键的插件停用后就好了,唉,折腾一上午!
这个个是可以的 等我找找 我以前写的东西 里面有这样类似的需求、
谢谢,劳烦了!function ajaxUpload() {
//var filepath=document.avatar_form.image.value;
var filepath=$("input[name='image']").val();
var extStart=filepath.lastIndexOf(".");
var ext=filepath.substring(extStart,filepath.lenth).toUpperCase();
if(ext!=".JPG"&&ext!=".JPEG"&&ext!=".GIF"&&ext!="PNG"){
$("#tips").slideDown(200);
$("#message_text").text('格式 仅限于JPG/JPEG, GIF or PNG');
setTimeout("$('#tips').slideUp(200)", 2000);
return false;
}
//var fso=new ActiveXObject("ScriptingFileSystemObject");
//alert(fso.GetFile(filepath).size);
document.avatar_form.submit();
}