Я отправляю изображение и связанные данные из моего приложения для Android в серверную часть laravel php
final MediaType JPEG = MediaType.parse("image/JPEG; charset=utf-8");
RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("filename", image.getFilename())
.addFormDataPart("hash", image.getHash())
.addFormDataPart("job_id", Integer.toString(image.getJobId()))
.addFormDataPart("team", Integer.toString(image.getTeam()))
.addFormDataPart("type", image.getType())
.addFormDataPart("image_file", image.getFilename(), RequestBody.create(JPEG, imagefile)).build();
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
Бэкэнд PHP выглядит так
public function updateJobImage(array $request_data){
var_dump($request_data);
$toInsertImage = [
'job_id' => $request_data['job_id'],
'type' => $request_data['type'],
'filename' => $request_data['filename'],
'team' => $request_data['team'],
'hash' => $request_data['hash']
];
$filepath = '/schedule_images/' . $request_data['hash'] . "/" . $request_data['filename'];
Storage::disk('s3_upload')->put($filepath, file_get_contents($request_data['image_file']));
Я могу получить все данные job_id / type / filename / team / hash совершенно нормально, но файл image_file является пустым массивом. Как мне справиться с получением файла изображения на стороне PHP
Также проверьте, существует ли image.getfilename () или нет
final MediaType MEDIA_TYPE = new image.getfilename().endsWith("jpg") ?
MediaType.parse("image/png") :
MediaType.parse("image/jpeg");RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart("image_file", System.currentTimeMillis()+"profile.jpg", RequestBody.create(MEDIA_TYPE, image.getfilename()))
.build();
Request request = new Request.Builder()
.post(requestBody)
.url(url)
.build();
Других решений пока нет …