Retrofit PUT Multipart在Android中上传后追加文本文件

问题描述 投票:0回答:1

我正在尝试使用带有PUT请求的Retrofit 2将文件上传到服务器。

这是我的方法:

@Multipart
@PUT
Call<Void> uploadFile(@Url String presignedUrl, @Part MultipartBody.Part file, @Part("file") RequestBody name);

上传文本文件:

FileWriter writer = new FileWriter(m_capturedFile);
                        writer.append(m_weakActivity.get().m_addContentNoteEdit.getText().toString());
                        writer.flush();
                        writer.close();

RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), m_capturedFile);
                        MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", m_capturedFile.getName(), requestBody);
RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), m_capturedFile.getName());

response = FileUploadApiWrapper.getService().uploadFile(predefinedUrl, fileToUpload,filename).execute();

问题是,当我创建文件并将其保存到Android文件系统时,文件已正确创建。但是,当我上载文件时,该文件会附加一些标头,如下所示:-

--292211e9-3b63-4b3e-8f49-bc75605656ac
Content-Disposition: form-data; name="file"; filename="TXT15782900294806741473599448458222.txt"
Content-Type: */*
Content-Length: 11

Sample text for testing
--292211e9-3b63-4b3e-8f49-bc75605656ac
Content-Disposition: form-data; name="file"
Content-Transfer-Encoding: binary
Content-Type: text/plain; charset=utf-8
Content-Length: 39

TXT15782900294806741473599448458222.txt
--292211e9-3b63-4b3e-8f49-bc75605656ac--

在上传正确的文件内容后,如何解决此问题?任何帮助表示赞赏。

android append retrofit2 text-files put
1个回答
0
投票

通过传递多部分/表单数据进行检查

RequestBody requestBody =
 RequestBody.create(MediaType.parse("multipart/form-data"), m_capturedFile);
                        MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", m_capturedFile.getName(), requestBody);

并且不要传递第三个参数,因为文件名已经在requestBody中

© www.soinside.com 2019 - 2024. All rights reserved.