java实现大文件上传下载HTTP接口代码实现
时间: 2023-06-07 15:09:30 浏览: 66
很高兴为您解答。以下是 Java 实现大文件上传下载 HTTP 接口的示例代码:
文件上传
```java
public class FileUploadHandler extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String savePath = "C:/uploads";
String tempPath = "C:/uploads/temp";
File tempFile = new File(tempPath);
if (!tempFile.exists()) {
tempFile.mkdir();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 1024);
factory.setRepository(tempFile);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
continue;
}
String fileName = item.getName();
long fileSize = item.getSize();
if ("".equals(fileName) || fileSize == 0) {
continue;
}
int index = fileName.lastIndexOf(".");
String fileType = fileName.substring(index + 1);
String newFileName = UUID.randomUUID().toString() + "." + fileType;
String saveFilePath = savePath + "/" + newFileName;
File saveFile = new File(saveFilePath);
item.write(saveFile);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
文件下载
```java
public class FileDownloadHandler extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fileName = request.getParameter("fileName");
String filePath = "C:/uploads/" + fileName;
File file = new File(filePath);
if (!file.exists()) {
return;
}
InputStream in = new FileInputStream(file);
OutputStream out = response.getOutputStream();
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
}
}
```
以上代码仅供参考,具体实现可能需要根据实际情况进行调整。希望能够帮助到您!