gpt4 book ai didi

java - 如何在 Retrofit 上上传没有 header 和容器的文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:31:58 25 4
gpt4 key购买 nike

我正在尝试使用 Retrofit2 库将文件上传到服务器。我不希望文件被任何 header 或任何容器包围,我只想将原始文件发送到服务器。

我正在使用这个界面:

    @PUT("JCExecPut/{typeUpload}/{fileId}")
@Headers("Content-Type: image/jpeg")
@Multipart
Call<ResponseBody> uploadFile(@Path("typeUpload")Integer typeUpload, @Path("fileId")String fileId, @Part RequestBody image);

我的上传功能:


public void uploadFileToServer(File file) {

RequestBody requestFile = RequestBody.create(MediaType.parse(mediaTypeString), file);

String idToUpload = UUID.randomUUID().toString();

Call<ResponseBody> call = service.uploadFile(11, idToUpload, requestFile);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
// Success
}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// Failure
}
});
}

事情是服务器总是会得到这样的文件实例

--ee3468c-eb4b-ff4-b59c-e09b08a4a25e
Content-Disposition: form-data; name="image"
Content-Transfer-Encoding: binary
Content-Type: image/jpeg
Content-Length: 46230
...
data image
...
--ee3468c-eb4b-ff4-b59c-e09b08a4a25e--

服务器的工作方式只需要数据镜像,而不需要所有容器数据--~~~---、内容配置等

我怎样才能实现这个目标?

最佳答案

(在这里为像我这样迷失的灵魂解答)

所以我就这样工作了,

1)像这样设置改造

@PUT
fun uploadFile(
@Url url: String,
@Header("Auth") authHeader: String = "IF_ANY", // note theres no need to mention content headers
@Body file: RequestBody
): Observable<ResponseBody>

2) 从代码附加文件

val requestFile = file.asRequestBody(YOUR_MEDIA_TYPE)

3) 只需使用 API urlfile 调用您的方法//uploadFile(API_URL, requestFile)

我希望它可以帮助某人节省数小时的挣扎

关于java - 如何在 Retrofit 上上传没有 header 和容器的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57003308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com