Я пытаюсь загрузить файл .zip с телефона Android с помощью POST-запроса. Я нашел в некоторых поисках через okhttp на форумах, что должно сделать это довольно просто.
Файл, который поступает на сервер, представляет собой zip-файл с правильным именем, но в нем нет содержимого (это 0kb). Я подозреваю, что поток не корректно очищается при отправке через okhttp.
public class FileSender extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
String zipPath = params[0];
String zipName = params[1];
String serverUrl = "http://192.168.1.109:5000"+"/files/"+zipName;
File file = new File(zipPath+zipName);
Log.d("File name", "zipName: "+zipName+" file.getName(): "+file.getName());
// TODO file is not send properly...
RequestBody postBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(zipName, file.getName(),
RequestBody.create(MediaType.parse("application/octet-stream"), file))
.build();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(serverUrl)
.post(postBody)
// TODO insert API-key here
.addHeader("API-key", "<my-api-key>")
.build();
try {
Response response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return "Request Submitted";
}}
Я в основном реализовал его с this , this в качестве шаблона.
Что-то не так делаю? Как еще можно загрузить файлы таким способом?
Использование Бессонница Я могу отправлять файлы, и там Content-Type также является application / octet-stream.