Я использую OkHttp для загрузки аудиофайла из моего приложения Android на сервер. Перед загрузкой я проверяю, что файл существует, действителен и доступен для чтения. Хотя сервер, кажется, получает объект файла, я получаю сообщение об ошибке, связанное с отсутствием метаданных, таких как имя файла и размер файла.
Код клиента
Вот код, который я использую на стороне клиента для проверки файла и отправки его на сервер в виде составного запроса.
private boolean sendFileDataToServer(JSONObject sendInfoData) throws IOException, JSONException {
Log.d(TAG, "sendFileDataToServer called");
// Initialize OkHttpClient and add logging interceptor
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.build();
Log.d(TAG, "OkHttpClient initialized with NetworkInterceptor and logging");
// Extract file path from JSON data
String filePath = sendInfoData.optString("audio");
Log.d(TAG, "Extracted file path: " + filePath);
File file = new File(filePath);
// Initialize request body
RequestBody requestBody;
// If file path is "empty" or file does not exist, switch to a standard form request
if ("empty".equals(filePath) || !file.exists() || !file.isFile() || file.length() Журнал HTTP-запросов: журнал HTTP-запросов на стороне клиента показывает, что метаданные файла включены в запрос.
Ошибка на стороне сервера: несмотря на это, журналы сервера показывают, что имя_файла и размер_файла пусты.
>Вопросы
Есть ли какая-либо возможная причина отсутствия метаданных при загрузке файла в виде составного запроса с помощью OkHttp?
Существуют ли дополнительные настройки или шаги для обеспечения полного получения метаданных на сервере?
/>Есть предложения по альтернативным подходам, позволяющим гарантировать, что метаданные не пропали?
Спасибо за любую помощь, которую вы можете оказать!
Что я пробовал< /h1>
Перед отправкой я проверил существование, читаемость и размер файла. Я ожидал, что метаданные файла (например, имя_файла, размер_файла) будут точно переданы на сервер.
Ожидаемый результат
Я ожидал, что сервер получит файл и все его метаданные правильно, без пропущенных полей, поэтому его можно успешно сохранить.
Фактический результат
Сервер получил файловый объект, но ключевые поля метаданных, такие как имя_файла, размер_файла и тип, отсутствовали, что привело к ошибке, указывающей, что эти значения не были включены в запрос.
Подробнее здесь: [url]https://stackoverflow.com/questions/79191148/android-file-metadata-missing-on-server-during-okhttp-multipart-upload[/url]
Я использую OkHttp для загрузки аудиофайла из моего приложения Android на сервер. Перед загрузкой я проверяю, что файл существует, действителен и доступен для чтения. Хотя сервер, кажется, получает объект файла, я получаю сообщение об ошибке, связанное с отсутствием метаданных, таких как имя файла и размер файла. Код клиента Вот код, который я использую на стороне клиента для проверки файла и отправки его на сервер в виде составного запроса. [code] private boolean sendFileDataToServer(JSONObject sendInfoData) throws IOException, JSONException { Log.d(TAG, "sendFileDataToServer called");
// Initialize OkHttpClient and add logging interceptor HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(loggingInterceptor) .build(); Log.d(TAG, "OkHttpClient initialized with NetworkInterceptor and logging");
// Extract file path from JSON data String filePath = sendInfoData.optString("audio"); Log.d(TAG, "Extracted file path: " + filePath); File file = new File(filePath);
// Initialize request body RequestBody requestBody;
// If file path is "empty" or file does not exist, switch to a standard form request if ("empty".equals(filePath) || !file.exists() || !file.isFile() || file.length() Журнал HTTP-запросов: журнал HTTP-запросов на стороне клиента показывает, что метаданные файла включены в запрос. Ошибка на стороне сервера: несмотря на это, журналы сервера показывают, что имя_файла и размер_файла пусты. >Вопросы Есть ли какая-либо возможная причина отсутствия метаданных при загрузке файла в виде составного запроса с помощью OkHttp? Существуют ли дополнительные настройки или шаги для обеспечения полного получения метаданных на сервере? />Есть предложения по альтернативным подходам, позволяющим гарантировать, что метаданные не пропали? Спасибо за любую помощь, которую вы можете оказать! Что я пробовал< /h1> Перед отправкой я проверил существование, читаемость и размер файла. Я ожидал, что метаданные файла (например, имя_файла, размер_файла) будут точно переданы на сервер. Ожидаемый результат Я ожидал, что сервер получит файл и все его метаданные правильно, без пропущенных полей, поэтому его можно успешно сохранить. Фактический результат Сервер получил файловый объект, но ключевые поля метаданных, такие как имя_файла, размер_файла и тип, отсутствовали, что привело к ошибке, указывающей, что эти значения не были включены в запрос.