我想将多个附加到帖子的文件发送到 Laravel 后端。它们都应该位于名为 media
的字段中,该字段是一个将文件类型映射到实际文件的数组。这是后端期望的表示:
'media' => [
'image' => UploadedFile,
'video' => UploadedFile,
'music' => UploadedFile,
// other type of files
]
我已经尝试了很多来自 Internet 的解决方案。如果我使用 @Query
注释后端接收结构正确,但文件没有按预期接收。如果我使用 @Part
注释,我无法发送命名数组(即 media
)。
最佳答案
我自己通过反复试验找到了解决方案。
下面是我的路由接口(interface)中对应的方法:
@Multipart
@POST("posts")
Call<ResponseBody> createPost(
@Part ArrayList<MultipartBody.Part> files
//other parameters
);
每当在您的代码中打包要发送的数据时,初始化一个 ArrayList
并添加如下文件:
RequestBody reqFile;
reqFile = RequestBody.create(MediaType.parse(mimeType), file);
ArrayList<MultipartBody.Part> partArrayList = new ArrayList<>();
partArrayList.add(MultipartBody.Part.createFormData("media[image]",file.getName(),reqFile));
partArrayList.add(MultipartBody.Part.createFormData("media[video]",file.getName(),reqFile));
route.createPost(
partArrayList
/*other_parameters*/
);
关于android - 如何将文件映射上传到php服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57543655/