2017-09-01 8 views
0

私は既に私たちのサーバにアップロードすることができた約10個のフィールドを持つカスタムオブジェクトのArrayListを持っています。問題は、フィールドの1つが、Retrofit Gsonの作成者が好きではないような、ファイルから変換したBase64でエンコードされた文字列を含むStringであることです。この問題は、イメージなしですべてのフィールドを送信するだけで解決できます。その後、ftpを使用してすべてのイメージをアップロードしますが、オブジェクトに何らかの形でイメージを置くことができればもっと簡単になります。Retrofit Androidを使用してmysqlにオブジェクトのリストをアップロード

質問:Base64でエンコードされた文字列を、カスタムオブジェクト内のフィールドとして、Retrofitを使用してURLに送信するにはどうすればよいですか?以下は

+0

Gsonでオブジェクトを作成しようとしているときに問題が発生しましたか? – barotia

答えて

1
@FormUrlEncoded 
@POST("/UploadImages") 
Call<ResponseBody> postImages(@Body ArrayListImage img); 

//POJO CLASS 

public class ArrayListImage { 
    @SerializedName("image") 
    @Expose 
    private ArrayList<String> image; 
    public ArrayListImage(ArrayList<String> image) { 
     this.image=image; 
    } 
} 
1

私はRetrofitを使用してファイルをアップロードするために使用RequestBodyコードです:ファイル名をエンコードするには

RequestBody lRequestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); 
MultipartBody.Part lFile = MultipartBody.Part.createFormData("file", file.getName(), lRequestBody); 
MultipartBody.Part title = MultipartBody.Part.createFormData("title", file.getName()); 
MultipartBody.Part lFilenamebase64 = MultipartBody.Part.createFormData("filenamebase64", base64EncodedFileName); 

String base64EncodedFileName = Base64.encodeToString(file.getName().getBytes(Charsets.UTF_8), Base64.URL_SAFE | Base64.NO_WRAP); 

私はのようなAPIを定義した:

@Multipart 
@POST("/upload") 
Observable<Response<ResponseBody>> uploadFile(@Part MultipartBody.Part file, @Part MultipartBody.Part title, @Part MultipartBody.Part base64EncodedFileName); 

私はそれがあなたを助けてくれることを願っています。

関連する問題