转载自  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实现多文件上传至本地服务器相关推荐

  1. Win10搭建FTP服务器+java代码实现文件上传至FTP服务器

    Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...

  2. flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤

    本文使用一个 demo 来演示如何使用 Flex 和 Java servlets 上传一个任意类型的本地文件到 RED5 服务器.使用的是 Flex 的 FileReference 接口,该接口可以对 ...

  3. java ftp上传文件 linux_Java实现把文件上传至ftp服务器

    用Java实现ftp文件上传.我使用的是commons-net-1.4.1.zip.其中包含了众多的java网络编程的工具包. 1 把commons-net-1.4.1.jar包加载到项目工程中去. ...

  4. java中ftp文件上传和中文乱码解决

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了 ...

  5. Java将文件上传到ftp服务器

    Java将文件上传到ftp服务器 首先简单介绍一下什么是FTP,以及如何在自己的电脑上搭建一个ftp服务器: -- FTP是文件传输协议(FTP)是一种客户端/服务器协议,用于将文件传输到主机或与主机 ...

  6. java文件上传到云服务器,java文件上传到云服务器

    java文件上传到云服务器 内容精选 换一换 当用户拥有Linux操作系统的外部镜像文件,且类型及操作系统符合外部镜像文件格式和操作系统类型要求时,用户可以将外部镜像文件创建为Linux系统盘镜像. ...

  7. Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示

    操作 linux 主机的话用 paramiko 会简单很多,可以看我下面的文章. Python 技术篇-用 paramiko 库实现 winodws 本地文件上传至 linux 服务器实例演示 首先是 ...

  8. Python 技术篇-用paramiko库实现winodws本地文件上传至linux服务器实例演示

    利用 paramiko 库可以实现 linux 服务器的管理. 如果想管理 windows 服务器的话就麻烦一点了,我用 flask 服务实现的,可以看我的这篇文章: Python 技术篇-用 fla ...

  9. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

最新文章

  1. 为什么有那么多的水,源源不断从山上流下来,到底是从哪里来的?
  2. 跑步碰撞大数据,走进悦跑圈的数据“大观园”
  3. 阿里云首发Dubbo3.0 + Nacos2.0
  4. python开发pandas_二、Python开发---33、pandas(1)
  5. Java状态和策略设计模式之间的差异
  6. == 和 is 的区别
  7. docker启动,重启,关闭命令
  8. python 邮件发送附件 本目录下所有文件_为python中的每个txt文件发送附件电子邮件...
  9. 花5000元买2天训练营,年轻人正在「高价买觉睡」
  10. 软件测试基础课程学习笔记7---如何撰写测试报告
  11. Java Web学习总结(14)——JSP基础语法
  12. windows process activation service 通信_Android四大组件——Service篇
  13. 今天就来分享一招坐着减肥法~ 办公室“久坐族”也同样适用
  14. CF(427D-Match amp; Catch)后缀数组应用
  15. java期末考试试卷及答案文库_《java语言程序设计》期末考试试题及答案(题库超级大全-应考必备)java考试题必从中出...
  16. 推荐WordPress 必备的常用插件及插件功能介绍
  17. 2017年区块链技术与加密货币市场:回顾与展望
  18. 你对软件测试了解多少?这篇文章会给你不一样的启示!
  19. java audio 分帧_语音特征参数MFCC提取过程详解
  20. zabbix3.4绘制网络拓扑图

热门文章

  1. activemq和mysql_activeMQ 填坑记
  2. 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
  3. 高等数学下-赵立军-北京大学出版社-题解-练习10.5
  4. LeetCode 404左叶子之和-简单
  5. Power Strings POJ - 2406(求一串字符串中有多少个循环节)
  6. CF603D Ruminations on Ruminants(计算几何/Simson theorem)
  7. [AGC026D]Histogram Coloring
  8. 牛客网【每日一题】4月24日 子序列
  9. 模板:K-D tree
  10. P3577-[POI2014]TUR-Tourism【状压dp】