Я отправляю видеофайл и некоторые другие данные из приложения для Android на свой сервер, на котором запущено приложение для платформы Play, я использую combination из multipartEntity
и Volley
, чтобы отправить запрос на отправку сервер.Анализ многопользовательского запроса в структуре воспроизведения
Мне нужно, чтобы parse
получил multipartEntity
запрос в моем контроллере и сохранил видео в папке на сервере и отправил остальную часть данных в базу данных mySQL.
MultipartRequest:
private static final String FILE_PART_NAME = "fileKey";
public MultipartRequest(String url, File file, Map<String, String> mStringPart,
Response.Listener<String> listener,
Response.ErrorListener errorListener)
super(Method.POST, url, errorListener);
mListener = listener;
mFilePart = file;
this.mStringPart = mStringPart;
entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
buildMultipartEntity();
}
private void buildMultipartEntity() {
entity.addPart(FILE_PART_NAME, new FileBody(mFilePart));
for (Map.Entry<String, String> entry : mStringPart.entrySet()) {
entity.addTextBody(entry.getKey(), entry.getValue());
}
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
httpentity = entity.build();
httpentity.writeTo(bos);
} catch (IOException e) {
VolleyLog.e("IOException writing to ByteArrayOutputStream");
}
return bos.toByteArray();
}
Это мой контроллер до сих пор:
public static Result uploadFile(){
RequestBody body = request().body();
Http.MultipartFormData multippartBody = body.asMultipartFormData();
if(multippartBody != null) {
return ok("Got: " + "Hi");
}
else {
return badRequest("Expecting text/plain request body");
}
}
Я думаю, что мне нужно какое-то итератор, чтобы вытащить видео и другие данные из multippartBody
, но я m unsure, как это сделать
Редактировать
Обновленный контроллер:
public static Result jsonPost(){
RequestBody body = request().body();
Http.MultipartFormData multippartBody = body.asMultipartFormData();
Http.MultipartFormData.FilePart imageFile = body.getFile(fileKey);
if(multippartBody != null) {
return ok("Got: " + "hi");
}
else {
return badRequest("Expecting text/plain request body");
}
}
}
Я получаю не могу найти ошибку символа из игры на fileKey?
Edit Понял работает
public static Result jsonPost(){
RequestBody body = request().body();
Http.MultipartFormData multippartBody = body.asMultipartFormData();
Http.MultipartFormData.FilePart imageFile = multippartBody.getFile("fileKey");
if(imageFile.getFile() != null) {
File file = imageFile.getFile();
String fileName = imageFile.getFilename();
File newDir = new File("/public/images/","MyApp");
if(!newDir.isDirectory()){
newDir.mkdirs();
System.out.println("Created dir");
}
if(newDir.canWrite()){
file.renameTo(new File(newDir, fileName));
}
return ok("Got: " + "it");
}
else {
return badRequest("Expecting text/plain request body");
}
}
Это тип multipart/form-data, я отредактировал мой вопрос чтобы показать вам конструктор моего MultipartEntityBuilder, я попытался использовать ваш код, но не увенчался успехом, не могли бы вы немного рассказать о том, как я могу использовать ваш код. – Johntk