<%@ 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="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
<label>选择一个文件:</label>
<input type="file" name="file"><br>
<input type="submit" value="上传"><br>
</form>
</body>
</html>
@WebServlet("/UploadServlet")
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>club.luckylight.upload.UploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping>
@MultipartConfig
Part part = request.getPart("file");
String header = part.getHeader("content-disposition");
String path = header.substring(header.indexOf("filename=") + 10, header.length() - 1);
/**
* 根据文件的路径获取文件真实名称
*
* @param path
* 文件的路径
* @return 文件名称
*/
public static String getRealName(String path) {
int index = path.lastIndexOf("\\");
if (index == -1) {
index = path.lastIndexOf("/");
}
return path.substring(index + 1);
}
String name = UploadUtils.getRealName(path);
/**
* 根据文件名返回一个目录
*
* @param name
* 文件名称
* @return 目录
*/
public static String getDir(String name) {
int i = name.hashCode();
String hex = Integer.toHexString(i);
int j = hex.length();
for (int k = 0; k < 8 - j; k++) {
hex = "0" + hex;
}
return "/" + hex.charAt(0) + "/" + hex.charAt(1);
}
// 获取文件的真实路径
String realPath = this.getServletContext().getRealPath("/upload" + dir);
File file = new File(realPath);
if (!file.exists()) {
file.mkdirs();
}
// 获取输入流
InputStream inputStream = part.getInputStream();
// 定义输出流
FileOutputStream outputStream = new FileOutputStream(new File(file, name));
// 从输入流中读入数据并写到输出字节流中
int len = -1;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
// 关闭资源
outputStream.close();
inputStream.close();
// 删除临时文件
part.delete();
package club.luckylight.upload;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;
import club.luckylight.util.UploadUtils;
@WebServlet("/UploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 5661013723204858883L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取文件上传组件
Part part = request.getPart("file");
// 获取文件的路径
String header = part.getHeader("content-disposition");
String path = header.substring(header.indexOf("filename=") + 10, header.length() - 1);
// 获取文件名
String name = UploadUtils.getRealName(path);
// 获取文件的存放目录
String dir = UploadUtils.getDir(name);
String realPath = this.getServletContext().getRealPath("/upload" + dir);
File file = new File(realPath);
if (!file.exists()) {
file.mkdirs();
}
// 对拷流
InputStream inputStream = part.getInputStream();
FileOutputStream outputStream = new FileOutputStream(new File(file, name));
int len = -1;
byte[] bytes = new byte[1024];
while ((len = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, len);
}
// 关闭资源
outputStream.close();
inputStream.close();
// 删除临时文件
part.delete();
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("文件" + name + "上传成功!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
package club.luckylight.util;
public class UploadUtils {
/**
* 根据文件的路径获取文件真实名称
*
* @param path
* 文件的路径
* @return 文件名称
*/
public static String getRealName(String path) {
int index = path.lastIndexOf("\\");
if (index == -1) {
index = path.lastIndexOf("/");
}
return path.substring(index + 1);
}
/**
* 根据文件名返回一个目录
*
* @param name
* 文件名称
* @return 目录
*/
public static String getDir(String name) {
int i = name.hashCode();
String hex = Integer.toHexString(i);
int j = hex.length();
for (int k = 0; k < 8 - j; k++) {
hex = "0" + hex;
}
return "/" + hex.charAt(0) + "/" + hex.charAt(1);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有