Я использую загрузочные файлы Spring при загрузке на сервер. Я обнаружил что-то странное. Когда я загружаю Jpg-файл с 4,88 МБ, это занимает 8,47 с, но с 3,16 М zip-файлом, это занимает около 1,3 мин. Учитывая, что этот сжатый файл содержит более 900 небольших файлов. Я изменил другой zip-файл, содержащий 10 небольших файлов. Теперь для передачи данных требуется 33,96 с, даже если этот новый Zip-файл имеет размер 6,52 М, он больше, чем старый.
Так влияет ли количество файлов в zip-файле на скорость загрузки? Если так, то почему?
application.yml:
spring:
http:
multipart:
enabled: true
max-file-size: 20MB
Java:
@RequestMapping("/changeMainAttachment")
@ResponseBody
public Object addChangeMainAttachment(@RequestParam("changeMainAttachment[]") MultipartFile[] files){
String fileSavePath = gunsProperties.getFileUploadPath();
for (MultipartFile multipartFile : files) {
String fileName = UUID.randomUUID() + "#_#_#" + multipartFile.getOriginalFilename();
try {
logger.info("file uploaded to: " + fileSavePath + fileName);
multipartFile.transferTo(new File(fileSavePath + fileName));
} catch (Exception e) {
throw new BussinessException(BizExceptionEnum.UPLOAD_ERROR);
}
}
return new Msg();
}
На лицевой стороне я использую Bootstrap File-input
ЯШ:
initFileInput: function(select,_url,_showZone,_async,befordUpload,afterUploaded){
var i = $(select).fileinput({
theme: "gly",
uploadUrl: _url,
dropZoneEnabled: _showZone,
uploadAsync: _async,
showUpload: true,
showUploadedThumbs: true,
maxFileSize: 20*1024,
maxFileCount: 5,
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
hideThumbnailContent: true // hide image, pdf, text or other content in the thumbnail preview
});
if(befordUpload && typeof befordUpload == 'function'){
i.on('filebatchpreupload',befordUpload);
}
if(afterUploaded && typeof afterUploaded == 'function'){
i.on('filebatchuploadcomplete',afterUploaded);
}
}
Я вызываю этот метод следующим образом
ChangeAdd.initFileInput("#changeMainAttachment", /change/changeMainAttachment", true, true, ChangeAdd.fileBeforeUpload, ChangeAdd.fileAfterUploaded);