java实现多文件上传至本地服务器
转载自 java实现多文件上传至本地服务器
博主最近在做一个内网项目,内部可以访问外部数据,但是外部访问不了内部数据,这也就造成了可能文件无法上传,所以博主另辟蹊径,在本地服务器上建立一个文件夹专门用来存储上传数据。
环境:jdk,tomcat
一、前台上传文件(ajax上传)
<input type="file" name="annexUrl" id="annexUrl" multiple="multiple"/>
其中multiple=“multiple”,设置文件多上传
function uploadFile() {var files = document.getElementById("annexUrl").files;if (files.length != 0) {var formData = new FormData();for (var i = 0; i < files.length; i++) {var file = files[i];formData.append(file.name, file);}$.ajax({url: 'cdc/public/saveFiles',type: 'POST',cache: false,data: formData,//这个参数是jquery特有的,不进行序列化,因为我们不是json格式的字符串,而是要传文件processData: false,//注意这里一定要设置contentType:false,不然会默认为传的是字符串,这样文件就传不过去了contentType: false,success: function (data) {save(data.data);}});} else {save();}}
这里需要使用到formData对象用来封装file文件对象,save()方法是用来保存上传之后返回过来的文件路径,保存到数据库,便于下载。
二、后台接收文件,并上传至服务器
// 多文件上传,返回一个对象集合(附件地址,名称)@RequestMapping(value = "saveFiles", method = RequestMethod.POST)@ResponseBodypublic JSONObject saveFiles(HttpServletRequest request, HttpServletResponse response) {JSONObject jsonObject = new JSONObject();try {request.setCharacterEncoding("UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}Collection<Part> parts = null;try {parts = request.getParts();} catch (IOException e) {e.printStackTrace();} catch (ServletException e) {e.printStackTrace();}Iterator<Part> iterator = parts.iterator();
// 名称集合,返回给前台List<String> list = new ArrayList<>();while (iterator.hasNext()) {Part part = iterator.next();// 生成实际存储的真实文件名(唯一)
// 不知道为什么,文件上传必须得包含获取到的文件名,否则报文件名、目录名或卷标语法不正确,图片上传没有这种限制
// 文件名,保存导数据库,用来界面显示String name = part.getName();String realName = UUID.randomUUID().toString() + name;list.add(name + "&&" + realName);///home/tomcat/apache-tomcat-9.0.1/filesString realPath = "D:" + File.separator + "apache-tomcat-8.5.15" + File.separator + "files";// String realPath = "C:" + File.separator + "XHJ224" + File.separator + "software" + File.separator + "apache-tomcat-9.0.1" + File.separator + "files";
// String realPath = File.separator + "home" + File.separator + "tomcat" + File.separator + "apache-tomcat-9.0.1" + File.separator + "files";File file = new File(realPath);//如果目录不存在if (!file.isDirectory()) {//创建文件上传目录file.mkdirs();}// 文件存放的真实路径String filePath = realPath + File.separator + realName;try {part.write(filePath);} catch (IOException e) {e.printStackTrace();}}jsonObject.put("data", list);return jsonObject;}
其中list集合添加了一个由文件名和真实文件名拼接的字符串,后期save需要。realName是为了防止多上传文件名冲突,realPath是文件保存路径,不同的操作系统有不同的路径,realPath最好放在tomcat下,便于项目移植。
其中File.separator为路径分隔符,他能自动识别是哪个操作系统而使用不同的路径分隔符(windows是‘\’,linux是‘/’)。最后将list返回给前台。
java实现多文件上传至本地服务器相关推荐
- Win10搭建FTP服务器+java代码实现文件上传至FTP服务器
Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...
- flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤
本文使用一个 demo 来演示如何使用 Flex 和 Java servlets 上传一个任意类型的本地文件到 RED5 服务器.使用的是 Flex 的 FileReference 接口,该接口可以对 ...
- java ftp上传文件 linux_Java实现把文件上传至ftp服务器
用Java实现ftp文件上传.我使用的是commons-net-1.4.1.zip.其中包含了众多的java网络编程的工具包. 1 把commons-net-1.4.1.jar包加载到项目工程中去. ...
- java中ftp文件上传和中文乱码解决
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了 ...
- Java将文件上传到ftp服务器
Java将文件上传到ftp服务器 首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器: -- FTP是文件传输协议(FTP)是一种客户端/服务器协议,用于将文件传输到主机或与主机 ...
- java文件上传到云服务器,java文件上传到云服务器
java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...
- Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
操作 linux 主机的话用 paramiko 会简单很多,可以看我下面的文章. Python 技术篇-用 paramiko 库实现 winodws 本地文件上传至 linux 服务器实例演示 首先是 ...
- Python 技术篇-用paramiko库实现winodws本地文件上传至linux服务器实例演示
利用 paramiko 库可以实现 linux 服务器的管理. 如果想管理 windows 服务器的话就麻烦一点了,我用 flask 服务实现的,可以看我的这篇文章: Python 技术篇-用 fla ...
- java语言 文件上传,java中实现文件上传的方法
java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...
最新文章
- 为什么有那么多的水,源源不断从山上流下来,到底是从哪里来的?
- 跑步碰撞大数据,走进悦跑圈的数据“大观园”
- 阿里云首发Dubbo3.0 + Nacos2.0
- python开发pandas_二、Python开发---33、pandas(1)
- Java状态和策略设计模式之间的差异
- == 和 is 的区别
- docker启动,重启,关闭命令
- python 邮件发送附件 本目录下所有文件_为python中的每个txt文件发送附件电子邮件...
- 花5000元买2天训练营,年轻人正在「高价买觉睡」
- 软件测试基础课程学习笔记7---如何撰写测试报告
- Java Web学习总结(14)——JSP基础语法
- windows process activation service 通信_Android四大组件——Service篇
- 今天就来分享一招坐着减肥法~ 办公室“久坐族”也同样适用
- CF(427D-Match amp; Catch)后缀数组应用
- java期末考试试卷及答案文库_《java语言程序设计》期末考试试题及答案(题库超级大全-应考必备)java考试题必从中出...
- 推荐WordPress 必备的常用插件及插件功能介绍
- 2017年区块链技术与加密货币市场:回顾与展望
- 你对软件测试了解多少?这篇文章会给你不一样的启示!
- java audio 分帧_语音特征参数MFCC提取过程详解
- zabbix3.4绘制网络拓扑图
热门文章
- activemq和mysql_activeMQ 填坑记
- 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
- 高等数学下-赵立军-北京大学出版社-题解-练习10.5
- LeetCode 404左叶子之和-简单
- Power Strings POJ - 2406(求一串字符串中有多少个循环节)
- CF603D Ruminations on Ruminants(计算几何/Simson theorem)
- [AGC026D]Histogram Coloring
- 牛客网【每日一题】4月24日 子序列
- 模板:K-D tree
- P3577-[POI2014]TUR-Tourism【状压dp】