Servlet技术:文件上传
文件上传,即用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。
思路:读取用户上传的文件,写入服务器文件目录。
I/O
文件上传要点:
表单 method 属性应该设置为 POST 方法,不能使用 GET 方法;
表单 enctype 属性应该设置为 multipart/form-data;
文件上传后需要防止重名;
servlet.java
package cn.xtnotes.servlet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
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;
@MultipartConfig //使得当前servlet接受文件上传
public class Servlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gbk"); //设置请求数据编码
response.setCharacterEncoding("gbk");//设置响应数据编码
PrintWriter pw=response.getWriter();
Part part=request.getPart("mf");// 获取上传的文件名
String fileName=part.getSubmittedFileName(); //获取上传的文件名
String suffix=fileName.substring(fileName.lastIndexOf("."), fileName.length()); //获取文件后缀名
System.out.println("文件名:"+fileName);
String newFileName=UUID.randomUUID()+suffix; //创建写入文件的文件名
String serverPath=request.getServletContext().getRealPath("upload");//获取文件上传路径
System.out.println("服务器上传路径:"+serverPath);
FileOutputStream fos=new FileOutputStream(serverPath+"/"+newFileName);//创建服务器文件对象
InputStream is=part.getInputStream();
byte[] b=new byte[1024];
int l=is.read();
while(l!=-1) {
fos.write(b, 0, l);
l=is.read();
}
pw.print("文件上传成功");
fos.close();
is.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
upload.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="http://127.0.0.1:8080/U8/Servlet2" method="post" enctype="multipart/form-data">
<input type="file" name="mf">
<input type="submit" value="上传文件">
</form>
</body>
</html>
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/499.html
文章版权归作者所有,未经允许请勿转载。
THE END