java实现文件上传(使用FromData)
一、使用FromData将表单对象序列化后,使用request.getInputStream()来获取数据
1、表单代码如下
<form id="user-info" method="post" action="upload" ><input type="file" name="file" multiple> <input type="text" name="username"><input type="text" name="password"> </form> <button id="sub">提交</button>
2、js的代码
<script>function createXHR(){return new XMLHttpRequest();}var sub = document.getElementById("sub");sub.onclick=function(){var xhr = createXHR();var form = document.getElementById("user-info");//获取上边的表单xhr.open("post","upload",true);xhr.send(new FormData(form));} </script>
3、由于是序列化的表单所以java后端,不能使用request.getParameter()获取数据,需要使用request.getInputStream();获取数据
首先我们看到获取的数据
InputStream in = request.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(in));String str = "";while((str=br.readLine())!=null){System.out.println(str);}
可以看到读取到这些数据
4、接着使用apache的上传文件框架进行上传
实现效果
以下是代码
package com.wangyang.servlet;import java.io.File; import java.io.IOException; import java.util.List;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;@WebServlet("/upload") public class Upload extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");/*InputStream in = request.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(in));String str = "";while((str=br.readLine())!=null){System.out.println(str);}*/System.out.println("[-------------------------------------------------------]");String filepath=request.getServletContext().getRealPath("/")+"upload/";File file = new File(filepath);if(!file.exists()) {file.mkdir();}DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);try {List<FileItem> items= upload.parseRequest(request);for(FileItem item: items) {System.out.println(filepath+item.getName());if(!item.isFormField()) {item.write(new File(filepath+item.getName()));}if(item.isFormField()){System.out.println(item.getString());System.out.println(item.getFieldName());}}} catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}response.sendRedirect("index.jsp");} }
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Insert title here</title> </head> <body><form id="user-info" method="post" action="upload" ><input type="file" name="file" multiple> <input type="text" name="username"><input type="text" name="password"></form> <button id="sub">提交</button><script>function createXHR(){return new XMLHttpRequest();}var sub = document.getElementById("sub");sub.onclick=function(){var xhr = createXHR();var form = document.getElementById("user-info");xhr.open("post","upload",true);xhr.send(new FormData(form));}</script> </body> </html>
这里没有进行细节上的编程,只是为了说明简单原理
转载于:https://www.cnblogs.com/wangyang1749/p/9692507.html
java实现文件上传(使用FromData)相关推荐
- JAVA大文件上传断点续传解决方案
JAVA大文件上传断点续传解决方案 参考文章: (1)JAVA大文件上传断点续传解决方案 (2)https://www.cnblogs.com/songsu/p/11834425.html (3)ht ...
- java jsp 文件上传_用JSP编写文件上传
用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...
- centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载
1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...
- Java 多文件上传
转载自 Java 多文件上传 前台代码很简单: <input type="file" accept=".zip" class="file-lo ...
- 文件上传 java 完美,vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData())...
vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData()) 地址:https://www.cnblogs.com/muscles ...
- Java实现文件上传到服务器(FTP方式)
Java实现文件上传到服务器(FTP方式) 1,jar包:commons-net-3.3.jar 2,实现代码: //FTP传输到数据库服务器private boolean uploadServerB ...
- H5+JAVA的文件上传,断点续传
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- java web文件上传所需要的commons-fileupload和 commons-io jar包
文章目录 一.官网获取 二.百度网盘分享 三.分享与热爱 一.官网获取 学习java web文件上传时需要用到两个必备的jar包: commons-fileupload commons-io jar ...
- java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解
今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...
最新文章
- Swift for循环:用于索引,数组中的元素?
- python训练馆_Python训练营 01
- java 判断子类_java判断class是否是某个类的子类或父类
- html2canvas图片位移_html2canvas html截图插件图片放大清晰度处理方案,支撑恣意放大倍数,处理原插件图片偏移题目...
- 浅谈移动端页面无刷新跳转问题的解决方案
- php代码 编码转换,php字符编码转换代码
- JSP-Runoob:JSP 自定义标签
- linux抓取僵尸网络进程脚本
- 中国省-市-县(区)三级城市数据(json和数组)
- 中国眼下拥有的人造卫星的种类及其作用
- 30天自制操作系统——第二十四天增加命令行窗口
- gmx_MMPBSA.py的安装及使用--只翻译部分内容,具体可参考官方文档(https://valdes-tresanco-ms.github.io/gmx_MMPBSA/dev/)
- 计算机基础知识(基础入门小白专属)二
- 表达式转换(中缀转后缀)
- 信息学奥赛C++编程:鸡尾酒疗法
- Neurosim的manual细读(四)
- 关于在打败C魔王前经常被背刺这件事(C语言常见问题描述及解决方案和原因)
- Java - 传参到底是哪种? pass by value or pass by reference
- FreeRTOS学习 消息队列
- MySql下大数据量级别(1000万+)优化查询和操作方法
热门文章
- 使用Python分析网易云歌曲评论信息,我发现了这些有趣的规律
- 如何在博客上添加小游戏【原创】
- KDevelop的使用(包括交叉编译)[原创]
- 《运营之光》-- 学习笔记(二)
- MFC小笔记:控件随窗口变化
- python游戏编程快速上手豆瓣_Python游戏编程快速上手(第4版)
- 【Elasticsearch】Elasticsearch 通信模块的分析
- 【Elasticsearch】ES 7.8 写入 查询 Normalizer 忽略 大小写
- [Flink] Not a valid protocol version This 1s not an HTTP port
- 【hortonworks/registry】NoClassDefFoundError: org/apache/zookeeper/Watcher