Java中如何实现文件的上传
时间: 2023-11-22 18:53:23 浏览: 32
在Java中实现文件上传可以使用Java Servlet技术,具体步骤如下:
1. 创建一个Servlet类,继承HttpServlet类,并重写doPost方法。
2. 在doPost方法中使用HttpServletRequest对象获取上传的文件,并将文件保存到指定的路径。
3. 使用FileInputStream读取文件内容,使用OutputStream将文件内容写入到服务器中。
4. 在前端页面中使用form表单,设置enctype属性为multipart/form-data,将文件信息通过POST方式提交到Servlet中。
以下是示例代码:
```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("/UploadServlet")
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取上传文件的保存路径
String savePath = request.getServletContext().getRealPath("/upload");
//判断保存路径是否存在,如果不存在则创建
File file = new File(savePath);
if(!file.exists()) {
file.mkdirs();
}
//遍历所有上传的文件
for (Part part : request.getParts()) {
//获取上传文件的文件名
String fileName = part.getSubmittedFileName();
//将文件保存到指定路径中
part.write(savePath + File.separator + fileName);
//读取上传文件的内容
InputStream inputStream = part.getInputStream();
OutputStream outputStream = new FileOutputStream(savePath + File.separator + fileName);
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
inputStream.close();
outputStream.close();
}
}
}
```
在前端页面中的表单代码如下:
```html
<form action="UploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file1">
<input type="file" name="file2">
<input type="submit" value="上传">
</form>
```
注意事项:
1. enctype属性必须设置为multipart/form-data。
2. 在获取上传文件的时候,getPart()方法返回的是Part对象,通过Part对象可以获取文件的信息。
3. 在获取上传文件的内容的时候,需要使用InputStream读取文件内容,并使用OutputStream将文件内容写入到服务器中。