Я пытался загрузить на сервер Java Spring, работающий на моем ноутбуке, используя приложение, написанное в формах Xamarin, используя физическое устройство Redmi Android.
Но когда я отправляю многостраничный запрос, если он превышает примерно 2 МБ, файл теряет несколько сотен байтов к тому времени, когда он достигает сервера.
Например, исходный видеофайл имеет 8 268 891 байт. Иногда файл, который достигает сервера, будет иметь 8 267 175, а иногда 8 269 279 или какое-то другое случайное число.
Я не знаю, связано ли это с моим кодом Xamarin, потому что это, похоже, происходит независимо от того, использую ли я многостраничные запросы или отправьте его как строку base64 в запросе.
Но на всякий случай вот мой код Xamarin из нескольких частей
var multipartContent = new MultipartFormDataContent();
var videoBytes = new ByteArrayContent(file.GetStream().ToByteArray());
multipartContent.Add(videoBytes, "file", file.Path.FileName());
multipartContent.Add(new StringContent(serializedRequest, Encoding.UTF8, "application/json"), "request");
content = multipartContent;
}
switch (type)
{
case RequestType.Post:
result = await client.PostAsync(_siteUrl + apiPath, content, cancellationToken);
break;
И мой контроллер на сервере Spring
@RequestMapping(value = { RequestMappingConstants.MOBILE + RequestMappingConstants.UPLOAD + RequestMappingConstants.UPLOAD_VIDEO }, method = RequestMethod.POST)
public @ResponseBody VideoUploadResponse uploadVideo(@RequestPart(value="request") VideoUploadRequest request, @RequestPart(value="file") MultipartFile file, HttpServletRequest httpRequest) {
LOG.info("Inside video upload");
return uploadService.uploadWelcomeVideo(request, file, httpRequest);
}
Также мои настройки на сервере:
multipart.maxFileSize= 100MB
multipart.maxRequestSize= 100MB
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB
spring.servlet.multipart.resolve-lazily=false
Опять же, это происходит, пока размер видеофайла превышает 2 МБ. Поврежденный файл, попавший на сервер, невозможно воспроизвести. Сервер и клиент работают в одной сети Wi-Fi.
Я был бы очень благодарен, если бы вы могли помочь.