大文件下载

This commit is contained in:
thinkgem
2024-05-17 12:31:05 +08:00
parent 2900fb0ce2
commit 6c62d191c5

View File

@@ -7,6 +7,9 @@ package com.jeesite.common.io;
import com.jeesite.common.codec.EncodeUtils; import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.collect.ListUtils; import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.lang.StringUtils; import com.jeesite.common.lang.StringUtils;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import net.sf.jmimemagic.Magic; import net.sf.jmimemagic.Magic;
import net.sf.jmimemagic.MagicMatch; import net.sf.jmimemagic.MagicMatch;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
@@ -15,9 +18,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import javax.activation.MimetypesFileTypeMap; import javax.activation.MimetypesFileTypeMap;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.List; import java.util.List;
@@ -710,11 +710,11 @@ public class FileUtils extends org.apache.commons.io.FileUtils {
end = Long.parseLong(values[1]); end = Long.parseLong(values[1]);
} }
} }
int requestSize = 0; long requestSize = 0;
if (end != 0 && end > start) { if (end != 0 && end > start) {
requestSize = Long.valueOf(end - start + 1).intValue(); requestSize = Long.valueOf(end - start + 1).intValue();
} else { } else {
requestSize = Integer.MAX_VALUE; requestSize = Long.MAX_VALUE;
} }
response.setContentType(FileUtils.getContentType(file.getName())); response.setContentType(FileUtils.getContentType(file.getName()));
boolean isPreview = "preview".equalsIgnoreCase(request.getParameter("source")); boolean isPreview = "preview".equalsIgnoreCase(request.getParameter("source"));
@@ -748,12 +748,12 @@ public class FileUtils extends org.apache.commons.io.FileUtils {
} }
} }
randomFile.seek(start); randomFile.seek(start);
int needSize = requestSize; long needSize = requestSize;
while (needSize > 0) { while (needSize > 0) {
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int len = randomFile.read(buffer); int len = randomFile.read(buffer);
if (needSize < buffer.length) { if (needSize < buffer.length) {
out.write(buffer, 0, needSize); out.write(buffer, 0, (int)needSize);
} else { } else {
out.write(buffer, 0, len); out.write(buffer, 0, len);
if (len < buffer.length) { if (len < buffer.length) {