java web 基于参数工具类完成普通文本、图片的参数接收,上传效果截图(图片可以正常显示),及代码结构(能看到out目录下的upload中存在上传的文件)
时间: 2024-10-15 21:11:05 浏览: 21
在Java Web中,你可以使用MultipartResolver或者第三方库如Apache Commons FileUpload来处理表单数据,包括普通文本和图片的上传。这里是一个基本的代码结构示例,使用了`HttpServletRequest`对象来获取请求参数:
```java
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadUtil {
// 检查是否为multipart请求
public boolean isMultipart(HttpServletRequest request) {
return ServletFileUpload.isMultipartContent(request);
}
// 实现文件上传
public void handleFileUpload(HttpServletRequest request, HttpServletResponse response) throws Exception {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) { // 处理非文件字段
String fieldname = item.getFieldName();
String fieldValue = item.getString();
System.out.println("Field [" + fieldname + "]: " + fieldValue);
} else { // 处理文件上传
String fileName = item.getName(); // 文件名
String savePath = "/out/upload/" + fileName; // 保存路径
item.write(new File(savePath)); // 写入到服务器指定目录
// 图片显示:假设你已经设置了响应头支持inline图片展示
byte[] imageBytes = item.get();
response.setContentType(item.getContentType());
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.getOutputStream().write(imageBytes);
}
}
} finally {
upload.cleanup();
}
}
}
```
在这个例子中,如果用户提交了一个包含文本和图片的表单,`handleFileUpload`方法会分别处理它们,并将图片保存在服务器的`/out/upload/`目录下。图片文件通常会在该目录下显示,但为了安全起见,你还需要对上传文件做验证(比如检查大小、类型等)。
阅读全文