This commit is contained in:
2025-11-26 18:37:50 +08:00
parent 6525e5ce80
commit 27ed834c09

View File

@@ -370,40 +370,16 @@ public class ArchiveFileController {
String downLoadPath = path + fileNameServer;
String[] strings = fileName.split("\\.");
String type = strings[strings.length - 1];
boolean processedFromLocal = false;
// 检查是否通过URL访问
if (url != null && !url.isEmpty()) {
// 使用流式处理,避免完整下载
try {
URL url1 = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection)url1.openConnection();
urlConnection.setConnectTimeout(10000); // 10秒超时
urlConnection.setReadTimeout(10000);
urlConnection.connect();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
try (InputStream inputStream = urlConnection.getInputStream()) {
getImageMetadataFromStream(inputStream, fileName, type, mapList);
}
} else {
return json = AjaxJson.returnExceptionInfo("无法访问图片URL: " + url);
}
} catch (Exception e) {
log.error("处理URL图片失败: {}", e.getMessage());
return json = AjaxJson.returnExceptionInfo("处理URL图片失败: " + e.getMessage());
}
} else {
// 处理本地文件
File file = new File(downLoadPath);
if (!file.exists()) {
return json = AjaxJson.returnExceptionInfo("文件不存在: " + downLoadPath);
}
try (InputStream inputStream = new FileInputStream(file)) {
// 优先处理本地文件
File localFile = new File(downLoadPath);
if (localFile.exists()) {
try (InputStream inputStream = new FileInputStream(localFile)) {
getImageMetadataFromStream(inputStream, fileName, type, mapList);
// 获取文件大小
int length = (int) (file.length() / 1024);
int length = (int) (localFile.length() / 1024);
VideoInfoUtils.setMapList("大小","length",length + "kb",mapList);
// 判断是否数字加密了
@@ -419,12 +395,41 @@ public class ArchiveFileController {
VideoInfoUtils.setMapList("数据加密", "signatureData", signatureMap.get("signatureData"), mapList);
}
}
processedFromLocal = true;
log.info("成功从本地文件读取图片元数据: {}", downLoadPath);
} catch (Exception e) {
log.error("处理本地图片失败: {}", e.getMessage());
return json = AjaxJson.returnExceptionInfo("处理本地图片失败: " + e.getMessage());
processedFromLocal = false;
}
}
// 如果本地文件不存在或处理失败且提供了URL则尝试从URL处理
if (!processedFromLocal && url != null && !url.isEmpty()) {
log.info("本地文件不存在或处理失败尝试从URL读取: {}", url);
try {
URL url1 = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection)url1.openConnection();
urlConnection.setConnectTimeout(10000); // 10秒超时
urlConnection.setReadTimeout(10000);
urlConnection.connect();
if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
try (InputStream inputStream = urlConnection.getInputStream()) {
getImageMetadataFromStream(inputStream, fileName, type, mapList);
}
log.info("成功从URL读取图片元数据: {}", url);
} else {
return json = AjaxJson.returnExceptionInfo("无法访问图片URL: " + url + ",响应码: " + urlConnection.getResponseCode());
}
} catch (Exception e) {
log.error("处理URL图片失败: {}", e.getMessage());
return json = AjaxJson.returnExceptionInfo("处理URL图片失败: " + e.getMessage());
}
} else if (!processedFromLocal) {
// 本地文件不存在且没有提供URL
return json = AjaxJson.returnExceptionInfo("文件不存在: " + downLoadPath);
}
json.put("list", mapList);
}