javascript 导出文件 弹出选择路径窗口 返回路径和文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 导出文件 弹出选择路径窗口 返回路径和文件名相关的知识,希望对你有一定的参考价值。
我要实现导出excel功能,就是点击一个按钮,可以选择路径和输入文件名,然后传到后台,根据路径和文件名新建一个文件,将导出的内容写入,怎么实现啊?
出于安全原因, js不能访问客户端资源. 所以js写不了客户端文件. 使用file类i-n-p-u-t标签可以在浏览器上实现浏览客户端文件系统, 但是只能获取文件名, 路径对于js是不可见的. 所以你的方法是实现不了的.实现导出文件的通常做法是在后台生成好文件后, 将url重定向到已生成的文件或使用异步方法返回文件url在前台使用i-f-r-a-m-e打开, 这样就能直接下载. 之后根据客户端的设置, 是下载还是直接调用关联程序打开文档. 以xls文件为例, 客户端已安装office, 大多数浏览器是会直接代开该文件的, 可以在excel中另存到任意路径. 不过这些就不是js所能控制的了.
后台代码实现方面, 直接在网站目录下生成文件当然方便, 但是存在安全方面的问题, 因为静态url无法控制访问权限. 最好是将文件生成在网站文件系统意外的独立区域存储, 将下载事务包装成动态页面, 读取文件使用b-i-n-a-r-y方式写入r-e-s-p-o-n-s-e(注意根据文件类型正确写入c-o-n-t-e-n-t Type, 这样浏览器才能正确识别为文件下载). 这样做的好处显而易见, 不管是安全方面还是其他逻辑都可自由扩展.
尼玛, 好多禁用的词汇, 回答js相关的问题各种河蟹 参考技术A 那如果要是直接是后台生成一个excel表格文件,也就是xls文件,然后点击下载或是导出时候,页面上弹出下载框,可以供用户选择下载地址以及修改名字可以吗? 参考技术B 你把逻辑顺序搞错了,不产生文件(或者虚拟文件),哪儿来的文件路径啊?
应该的过程是这样的: 进入需要excel生成的页面时,后台已经创建完成需要下载的excel文件并把资源的url路径写出到页面的链接中,直接点击链接下载文件;跟javascript没有关系。
另外:如果使用javascript做异步操作,更可以实现根据页面选择内容动态生成资源,再下载。
资源下载的时候,客户端是否支持选择路径和重命名资源,要看是什么操作系统、使用的浏览器版本,以及关联的下载工具,一般来说,IE默认支持选择路径(配置过默认路径,支持不需要选择直接下载),firefox、chrome会有默认路径(可更改),基本不会弹框,除非客户更改过设置。
使用关联浏览器下载的时候,一般来说都会支持选择路径以及重命名,迅雷就是一个例子。
so:你所述问题不是javascript能够操控的范围。 参考技术C <input type="file" name="file" onchange="alert(this.value)"><br><br>这样不行么?<br>放表单提交··不就到服务端了吗?<br><br>到了服务端不就可以存数据库了吗?<br><br>其他的我就不知道了··<br>=====================================<br>用普通方式上传,如果设置了form 的enctype="multipart/form-data"<br>属性的话,在服务器端是取不到路径的! 参考技术D 这个问题,我感觉很费解,在进行导出文件的时候,不是先应该下载么,下载的时候不是应该有让你选择路径么,为什么还要自定义一个选择路径的窗口呢?
以上是关于javascript 导出文件 弹出选择路径窗口 返回路径和文件名的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC中导出Excel文件,关于弹出一个选择框,选择导出Excel文件的路径项目细节