java 上传文件示例
时间: 2023-10-14 21:26:26 浏览: 83
java上传文件实例
5星 · 资源好评率100%
好的,以下是一个Java上传文件的示例代码:
```
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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 javax.servlet.http.Part;
@WebServlet("/UploadFileServlet")
public class UploadFileServlet 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");
// 获取上传文件的输入流
Part part = request.getPart("file");
String fileName = extractFileName(part);
OutputStream out = null;
InputStream filecontent = null;
try {
out = new FileOutputStream(new File("D:/uploads/" + fileName));
filecontent = part.getInputStream();
int read = 0;
final byte[] bytes = new byte[1024];
while ((read = filecontent.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
if (filecontent != null) {
filecontent.close();
}
}
response.getWriter().print("文件上传成功!");
}
// 提取上传文件的文件名
private String extractFileName(Part part) {
String contentDisposition = part.getHeader("content-disposition");
String[] items = contentDisposition.split(";");
for (String item : items) {
if (item.trim().startsWith("filename")) {
return item.substring(item.indexOf("=") + 2, item.length() - 1);
}
}
return "";
}
}
```
以上代码实现了一个上传文件的Servlet,把上传的文件保存到了本地硬盘的"D:/uploads/"目录下。
需要注意的是,这里是通过Part对象获取上传文件的输入流,而不是通过FileItem对象。因为在Java Servlet 3.0规范之后,已经不再使用FileItem对象,而是使用Servlet 3.0的新特性——Part对象。所以,如果你是在Servlet 3.0之后的版本中开发上传文件功能,建议使用Part对象来处理上传文件。
阅读全文