当前位置: 首页 > 知识库问答 >
问题:

上传文件与改造2

百里秋月
2023-03-14

我确信,所有GET参数都正确写入。我想,问题在于我如何发送文件上传

            Map<String, RequestBody> map = new HashMap<>();
            File file = new File("/storage/emulated/0/ConstructSecure/d1940b05-76d1-4d98-b4b4-b04b8247c8cb.png");
            RequestBody requestBody = RequestBody.create(MediaType.parse("image/png"), file);
            String fileName = file.getName();
            map.put("attachment\"; filename=\"" + fileName + "\"", requestBody);

            //GET parameters
            Map<String, String> params = new HashMap<String, String>();
            params.put("inspectionUUID", inspectionUUID);
            params.put("noteUUID", noteUUID);
            params.put("attachmentUUID", attachmentUUID);
            params.put("noteType", noteType);
            params.put("modifiedTime", modifiedTime);

            Call<ResponseBody> call = service.upload(access_token,params,map);
            call.enqueue()....

接口:

@Multipart
    @POST("api/MediaFiles/AddMediaFile")
    Call<ResponseBody> upload(
            @Header("Authorization") String authorization,
            /* GET params */ @QueryMap Map<String, String> params,
            @PartMap Map<String, RequestBody> map
    );

有人能帮我吗?

共有2个答案

米子轩
2023-03-14

上传图片请点击此处

http://mushtaq.16mb.com/retrofit_example/uploads/

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

class AppConfig {

    private static String BASE_URL = "http://mushtaq.16mb.com/";

    static Retrofit getRetrofit() {

        return new Retrofit.Builder()
                .baseUrl(AppConfig.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
}

========================================================
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;

interface ApiConfig {
    @Multipart
    @POST("retrofit_example/upload_image.php")
    Call<ServerResponse> uploadFile(@Part MultipartBody.Part file,
                                    @Part("file") RequestBody name);

    /*@Multipart
    @POST("ImageUpload")
    Call<ServerResponseKeshav> uploadFile(@Part MultipartBody.Part file,
                                    @Part("file") RequestBody name);*/

    @Multipart
    @POST("retrofit_example/upload_multiple_files.php")
    Call<ServerResponse> uploadMulFile(@Part MultipartBody.Part file1,
                                       @Part MultipartBody.Part file2);
}






https://drive.google.com/open?id=0BzBKpZ4nzNzUMnJfaklVVTJkWEk
邓德厚
2023-03-14

我花了很多时间来搜索,如何以字节流的形式发送文件,因为web中的所有答案都是通过RequestBody上传的,但这不适用于我的案例。因此,以下是解决方案:

InputStream in = new FileInputStream(file);
    byte[] buf = new byte[in.available()];
    while (in.read(buf) != -1) ;
    RequestBody requestBodyByte = RequestBody
            .create(MediaType.parse("application/octet-stream"), buf);
    String content_disposition = "attachment; filename=\"" + fileName + "\"";

    //GET parameters
    Map<String, String> params = new HashMap<String, String>();
    params.put("inspectionUUID", inspectionUUID);
    params.put("noteUUID", noteUUID);
    params.put("attachmentUUID", attachmentUUID);
    params.put("noteType", noteType);
    params.put("modifiedTime", modifiedTime);

    Call<ResponseBody> call = service.upload(access_token, content_disposition, requestBodyByte, params);

接口:

 @POST("api/MediaFiles/AddMediaFile")
    Call<ResponseBody> upload(
            @Header("Authorization") String authorization,@Header("Content-Disposition") String content_disposition, @Body RequestBody photo,
            /* GET params */ @QueryMap Map<String, String> params
    );
 类似资料:
  • 我正在使用改造连接到POST Data中需要授权令牌的服务器。请求示例: 我使用这样的方法,它的作品很好: 我将令牌和其他参数放入RequestBody: 所有这些都工作正常。但是我不知道如何使用文件上传方法: 所以我需要使用来上传文件,但是如何将Multipartbody与包含令牌的Request estbody结合起来?或者如何正确地做到这一点?我很困惑...

  • 这是我的密码。它正常工作。但我想上传其他图像类型,如png,jpeg等。因此,我想更改filename=\“file1.jpeg” 我也想同时发送不同数量的文件。 请帮我解决这个问题。谢谢你。

  • 本文向大家介绍java 文件上传(单文件与多文件),包括了java 文件上传(单文件与多文件)的使用技巧和注意事项,需要的朋友参考一下 java 文件上传(单文件与多文件) 一、简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。

  • 如何使用改造发送请求字符串参数。我已经提交了下面的代码。这里如何添加字符串参数并发送到服务器。 应用配置: 公共类AppConfig{ ApiConfig: 服务器响应: 在上面的示例中,代码只是在请求主体的帮助下传递了令牌和文件。 如何用上面的代码发送请求字符串param 这就是如何使用改型将下面的登录参数详细信息作为请求参数发送。当我尝试时,我得到了/Throwable:com。谷歌。格森。流

  • 当以字符串形式发送文件时,如何显示上载进度?我了解了关于这个问题的所有可用帖子,但都使用了带有文件的多部分帖子。但我没有这个文件。我有一根非常非常大的绳子。请帮帮我,谢谢。 我添加了拦截器: 此自定义请求主体: 改装服务: 和上传方法: 但进展只有一次100%发射

  • 当 Django 处理文件上传时,文件数据最终放置在 request.FILES 中(有关 request 对象的更多信息,请参阅请求和响应对象的文档)。本文档介绍了文件如何存储在磁盘和内存中,以及如何自定义默认行为。 !> 警告:如果您接受来自不可信用户的上传内容,则存在安全风险!有关缓解详细信息,请参阅用户上传内容中的安全指南主题。 基本文件上传 考虑一个包含 FileField 的简单表单: