javaweb实现简单的文件上传
2018-03-13 13:14
239 查看
JavaWeb实现文件的上传
实现用户将文件上传到服务里的功能文件上传功能解释:当用户在前端网页点击文件上传后,用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,并通过Part对象获得流,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里
上传工具类的使用
commons-fileupload-1.2.2.jarcommons-io-2.1.jar相关jar包的下载地址 点击下载将jar包放到WEB-INF的lib目录下
JSP端 用户选择文件并将文件上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="/webtest/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" /> <br/><br/>
<input type="submit" value="上传" />
</form>
</body>
</html>Servlet端的代码 ,获取上传的文件并保存在服务器的目录下 package com.xyf.web6;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
Part part = request.getPart("uploadFile");
String inputName=part.getName();
InputStream input=part.getInputStream();
//想要保存的目标文件的目录下
String tagDir=getServletContext().getRealPath("/upload");
//避免文件名重复使用uuid来避免,产生一个随机的uuid字符
String realFileName=UUID.randomUUID().toString();
OutputStream output=new FileOutputStream(new File(tagDir,realFileName));
int len=0;
byte[] buff=new byte[1024*8];
while ((len = input.read(buff)) > -1) {
output.write(buff, 0, len);
}
input.close();
output.close();
response.setCharacterEncoding("utf-8");
response.getWriter().print("upload success!!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}启动工程之后
选择上传的文件点击上传,并在服务器目录下得到上传的文件
注意事项
1.相关的标注@MultipartConfig将该标注配置到服务器Servlet上面,否则会忽略掉文件的内容。并且报错,错误信息如下严重: Servlet.service() for servlet [com.xyf.web6.UploadServlet] in context with path [/webtest] threw exception
java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided2.客户端表单中必须指定method=post,因为上传的文件可能很大,并且指定enctype=multipart/form-data使用上传文件专门的编码方式enctype="multipart/form-data"客户端还需要使用<input type="file" 选择要上传的文件
3.如果提示当前目录不存在。会出现文件不存在的错误,这个时候需要先去判断 ,如果不存在就创建,添加以下代码在servlet里String uploadFullPath=tagDir;
//先创建这个文件
File file=new File(uploadFullPath);
File ParentFile=file.getParentFile();
if(!ParentFile.exists())
{
ParentFile.mkdirs();//如果文件夹不存在,就创建文件夹
}
当然这样的上传方式不是很安全,而且没有对于文件类型过滤等操作,没有对恶意代码进行过滤操作。
我也是刚接触不久,有错误的地方欢迎大家可以指出,以后会相应的对这方便内容进行补充。
实现用户将文件上传到服务里的功能文件上传功能解释:当用户在前端网页点击文件上传后,用户上传提交的内容会存放到临时的文件中,我们使用getpart来获取Part对象,并通过Part对象获得流,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里
上传工具类的使用
commons-fileupload-1.2.2.jarcommons-io-2.1.jar相关jar包的下载地址 点击下载将jar包放到WEB-INF的lib目录下
JSP端 用户选择文件并将文件上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="/webtest/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" /> <br/><br/>
<input type="submit" value="上传" />
</form>
</body>
</html>Servlet端的代码 ,获取上传的文件并保存在服务器的目录下 package com.xyf.web6;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
Part part = request.getPart("uploadFile");
String inputName=part.getName();
InputStream input=part.getInputStream();
//想要保存的目标文件的目录下
String tagDir=getServletContext().getRealPath("/upload");
//避免文件名重复使用uuid来避免,产生一个随机的uuid字符
String realFileName=UUID.randomUUID().toString();
OutputStream output=new FileOutputStream(new File(tagDir,realFileName));
int len=0;
byte[] buff=new byte[1024*8];
while ((len = input.read(buff)) > -1) {
output.write(buff, 0, len);
}
input.close();
output.close();
response.setCharacterEncoding("utf-8");
response.getWriter().print("upload success!!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}启动工程之后
选择上传的文件点击上传,并在服务器目录下得到上传的文件
注意事项
1.相关的标注@MultipartConfig将该标注配置到服务器Servlet上面,否则会忽略掉文件的内容。并且报错,错误信息如下严重: Servlet.service() for servlet [com.xyf.web6.UploadServlet] in context with path [/webtest] threw exception
java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided2.客户端表单中必须指定method=post,因为上传的文件可能很大,并且指定enctype=multipart/form-data使用上传文件专门的编码方式enctype="multipart/form-data"客户端还需要使用<input type="file" 选择要上传的文件
3.如果提示当前目录不存在。会出现文件不存在的错误,这个时候需要先去判断 ,如果不存在就创建,添加以下代码在servlet里String uploadFullPath=tagDir;
//先创建这个文件
File file=new File(uploadFullPath);
File ParentFile=file.getParentFile();
if(!ParentFile.exists())
{
ParentFile.mkdirs();//如果文件夹不存在,就创建文件夹
}
当然这样的上传方式不是很安全,而且没有对于文件类型过滤等操作,没有对恶意代码进行过滤操作。
我也是刚接触不久,有错误的地方欢迎大家可以指出,以后会相应的对这方便内容进行补充。
相关文章推荐
- JavaWeb 文件的上传和下载功能简单实现代码
- JavaWeb实现简单的文件上传下载
- 简单的文件上传(javaweb实现)
- 简单的Sturts上传文件实现
- JSP实现简单的文件上传
- 文件上传原理简单实现
- Ext2.1 + Struts2 实现简单的文件上传
- 用简单的代码来实现文件上传
- Linux下基于C实现的socket简单文件上传实例
- asp.net文件上传下载的简单实现
- 文件上传原理简单实现
- 简单SHELL脚本实现FTP上传文件
- ASP.NET 2.0中上传文件的简单实现
- JS简单实现文件上传(无需插件)
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- [每天一个demo]用c#实现简单的上传文件程序
- 一个简单的struts实现文件上传示例
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- Java动态显示文件上传进度的简单实现 - java2000.net的专栏 - CSDNBlog
- Asp.net中文件上传下载的简单实现