路径 选择 弹框

本篇主要是我针对页面的下载文件  弹出文件路径选择框的总结   希望可以帮到需要的朋友.


第一种:  js 中的ActionXObject   

该方法不做简介  因为只使用IE  兼容性太差  没有用过.

第二种: 超链接


如果你的文件直接显示在页面上  那你就可以用<a href=" ">**</a>.

如果你的文件不显示在页面上  是通过点击按钮 来实现 可以用window.location.href后加文件名称 前面的是window.location.href相当于localhost://端口号/项目名称  

"parent.location.href"是上一层页面跳转

"top.location.href"是最外层的页面跳转

JS获取当前网址、主机地址项目根路径

//获取当前网址,如: http://localhost:8080/Tmall/index.jsp
var curWwwPath=window.document.location.href; 

//获取主机地址之后的目录如:/Tmall/index.jsp 
var pathName=window.document.location.pathname; 
var pos=curWwwPath.indexOf(pathName); 

//获取主机地址,如: http://localhost:8080 
var localhostPaht=curWwwPath.substring(0,pos); 

//获取带"/"的项目名,如:/Tmall 
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); 

弊端:每次只能下载一个文件

第三种: JFileChooser 
直接贴代码:
String path=null;
File f=null;
try{     
            flag=fc.showOpenDialog(null);     
        }    
        catch(HeadlessException head){     
             System.out.println("Open File Dialog ERROR!");    
        }        
        if(flag==JFileChooser.APPROVE_OPTION){
             //获得该文件    
            f=fc.getSelectedFile();    
            path=f.getPath();
         }  


  
//以上获得选择的文件夹
//若要判断其中是否还有其他目录,可以这样做
File dir=new File(path);
//获得改目录下的文件的文件名,如果没有的话,filesName.length()=0
String[] filesName=dir.list();
for(int i=0;i<filesName.length;i++){
    File temp=new File(path+"/"+filesName[i]);
    if(temp.isDirectory()){
        break;
    }
}
return path;
   }
2.  选择文件(亲 ,要注意他们的区别哦得意)
JFileChooser fc = new JFileChooser();
fc.setDialogType(JFileChooser.FILES_ONLY);
fc.setDialogTitle("选择文件");
fc.setMultiSelectionEnabled(false);
fc.showSaveDialog(fc);
if (fc.getSelectedFile()==null) {
return null;
}
return fc.getSelectedFile().getPath();
弊端:用户必须安装java

第四种 最喜欢的一种
html:
1. <a href="javascript:" οnclick="down1();return false;">单文件下载</a><br /><br />
2. <a href="javascript:" οnclick="down2();return false;">多文件下载</a><br /><br />
3. <a href="javascript:" οnclick="down3();return false;">多文件下载自定义名字</a><br /><br />
js:
var Downer = (function(files){
	var h5Down = !/Trident|MSIE/.test(navigator.userAgent);
	// try{
	// 	h5Down = document.createElement("a").hasOwnProperty("download");
	// } catch(e){
	// 	h5Down = document.createElement("a").download;
	// }

	/**
	 * 在支持 download 属性的情况下使用该方法进行单个文件下载
	 * @param  {String} fileName
	 * @param  {String|FileObject} contentOrPath
	 * @return {Null}
	 */
	function downloadFile(fileName, contentOrPath){
		var aLink = document.createElement("a"),
			evt = document.createEvent("HTMLEvents"),
			isData = contentOrPath.slice(0, 5) === "data:",
			isPath = contentOrPath.lastIndexOf(".") > -1;

		// 初始化点击事件
		evt.initEvent("click");

		// 添加文件下载名
		aLink.download = fileName;

		// 如果是 path 或者 dataURL 直接赋值
		// 如果是 file 或者其他内容,使用 Blob 转换
		aLink.href = isPath || isData ? contentOrPath
					: URL.createObjectURL(new Blob([contentOrPath]));

		aLink.dispatchEvent(evt);
	}

	/**
	 * [IEdownloadFile description]
	 * @param  {String} fileName
	 * @param  {String|FileObject} contentOrPath
	 */
	function IEdownloadFile(fileName, contentOrPath, bool){
		var isImg = contentOrPath.slice(0, 10) === "data:image",
			ifr = document.createElement('iframe');

		ifr.style.display = 'none';
		ifr.src = contentOrPath;

		document.body.appendChild(ifr);

		// dataURL 的情况
		isImg && ifr.contentWindow.document.write("<img src='" + 
				contentOrPath + "' />");

		// 保存页面 -> 保存文件
		// alert(ifr.contentWindow.document.body.innerHTML)
		if(bool){
			ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
			document.body.removeChild(ifr);
		} else {
			setTimeout(function(){
				ifr.contentWindow.document.execCommand('SaveAs', false, fileName);
				document.body.removeChild(ifr);
			}, 0);
		}
	}

	/**
	 * [parseURL description]
	 * @param  {String} str [description]
	 * @return {String}     [description]
	 */
	function parseURL(str){
		return str.lastIndexOf("/") > -1 ? str.slice(str.lastIndexOf("/") + 1) : str;
	}

	return function(files){
		// 选择下载函数
		var downer = h5Down ? downloadFile : IEdownloadFile;

		// 判断类型,处理下载文件名
		if(files instanceof Array) {
			for(var i = 0, l = files.length; i < l ; i++) 
				// bug 处理
				downer(parseURL(files[i]), files[i], true);
		} else if(typeof files === "string") {
			downer(parseURL(files), files);
		} else {
			// 对象
			for(var file in files) downer(file, files[file]);
		}
	}

})();


function down1(){
	Downer("../file/test.txt");
}

function down2(){
	Downer(["../file/test.txt","../file/test.txt"]);
}

function down3(){
	Downer({
		"1.txt":"../file/test.txt",
		"2.jpg":"../file/test.jpg"
	});	
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值