tomcat http上传
时间: 2023-09-24 09:07:24 浏览: 41
在 Tomcat 中,可以通过使用 Servlet API 来处理 HTTP 文件上传。以下是一个简单的示例:
1. 在 web.xml 文件中配置一个 multipart-config 元素,以便 Tomcat 知道该如何处理文件上传请求。示例代码如下:
```xml
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.example.FileUploadServlet</servlet-class>
<multipart-config>
<!-- 文件上传时的临时目录 -->
<location>/tmp</location>
<!-- 最大文件大小 -->
<max-file-size>2097152</max-file-size>
<!-- 最大请求大小 -->
<max-request-size>4194304</max-request-size>
<!-- 内存中缓存数据的大小 -->
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
</servlet>
```
2. 在 Servlet 中处理文件上传请求。示例代码如下:
```java
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 判断该请求是否为文件上传请求
if (ServletFileUpload.isMultipartContent(request)) {
// 创建一个文件上传处理器
ServletFileUpload upload = new ServletFileUpload();
try {
// 解析上传请求
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
String name = item.getFieldName();
InputStream stream = item.openStream();
if (item.isFormField()) {
// 处理普通表单字段
String value = Streams.asString(stream);
System.out.println(name + " = " + value);
} else {
// 处理上传的文件
String filename = item.getName();
// 在服务器上保存文件
File file = new File("/path/to/upload/directory", filename);
OutputStream out = new FileOutputStream(file);
try {
IOUtils.copy(stream, out);
} finally {
IOUtils.closeQuietly(out);
}
System.out.println("File " + filename + " uploaded successfully.");
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
}
```
这个例子演示了如何使用 Apache Commons FileUpload 库来处理文件上传请求。需要注意的是,以上代码只是一个简单的示例,实际应用中需要增加对异常情况的处理,例如文件上传失败时的处理。