java Content-Type: image/jpeg 上传图片封装方法
时间: 2023-06-26 19:09:15 浏览: 175
下面是一个简单的Java上传图片的封装方法:
```java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLConnection;
import java.nio.file.Files;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
public class UploadUtils {
/**
* 上传文件到指定目录
*
* @param request
* HTTP请求对象
* @param directory
* 目录
* @return 上传后的文件名
* @throws ServletException
* 如果上传出现异常
* @throws IOException
* 如果读取文件出现异常
*/
public static String upload(HttpServletRequest request, String directory) throws ServletException, IOException {
String fileName = null;
for (Part part : request.getParts()) {
if (part != null && part.getSize() > 0) {
fileName = getFileName(part);
String contentType = part.getContentType();
if ("image/jpeg".equals(contentType)) {
String filePath = directory + File.separator + fileName;
InputStream inputStream = part.getInputStream();
OutputStream outputStream = new FileOutputStream(filePath);
try {
byte[] buffer = new byte[1024];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} finally {
outputStream.close();
inputStream.close();
}
}
}
}
return fileName;
}
/**
* 获取上传文件的文件名
*
* @param part
* HTTP请求中的Part对象
* @return 上传文件的文件名
*/
private static String getFileName(Part part) {
String contentDispositionHeader = part.getHeader("content-disposition");
String[] elements = contentDispositionHeader.split(";");
for (String element : elements) {
if (element.trim().startsWith("filename")) {
return element.substring(element.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
}
```
这个方法使用了Servlet 3.0规范中的Part对象来获取上传文件的输入流,然后将其保存到指定目录下。这个方法只适用于上传JPEG格式的图片。如果要上传其他类型的文件,可以根据需要更改contentType的值。
阅读全文