0

画像と文字列パラメータを使用してファイルをアップロードしようとしていますが、ファイルは正常にアップロードされますが、文字列paremeterは常にnullです。他の誰かが私を助けてくれますか?前もって感謝します!asp.net web apiに改造したアンドロイドファイルアップロード

//Retrofit Interface 
@Multipart 
@POST("account/imageupload") 
Call<ResponseBody> uploadProfilePicture(@Part MultipartBody.Part file, 
@Part("userid") RequestBody userid); 

//Activity 
ApiClient apiClient = new ApiClient(token.getAccessToken(), "multipart/form-data"); 
      ApiInterface apiService = apiClient.getClient().create(ApiInterface.class); 

      File file = new File(selectedImagePath); 
      RequestBody reqFile = RequestBody.create(MediaType.parse(getContentResolver().getType(selectedImageUri)), file); 
      MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), reqFile); 

      RequestBody user = RequestBody.create(MultipartBody.FORM, token.getUserId()); 

      Call<ResponseBody> call = apiService.uploadProfilePicture(body, user); 
      call.enqueue(new Callback<ResponseBody>() { 
       @Override 
       public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
        int statusCode = response.code(); 
       } 

       @Override 
       public void onFailure(Call<ResponseBody> call, Throwable t) { 
        String message = t.getMessage(); 
       } 
      }); 

    //Web API (C# web api) 
    [Route("imageupload")] 
    [HttpPost] 
    public async Task<IHttpActionResult> UploadProfilePicture([FromBody] 
    Models.ProfilePhotoUpload photo) 
    { 
     WriteImage(photo.file);    
     return Ok(); 
    } 

    //Api Controller Model 
    public class ProfilePhotoUpload 
    { 
     string userid { get; set; } 
     public HttpFile file { get; set; } 
    } 

問題は、ファイルが正しくアップロードされるが、useridパラメータが常にnullであることです。

web api controller action

+1

を。 –

+0

ああ、あなたは正しかったHaresh、私のAPIモデルのuseridプロパティはパブリック修飾子が見つからなかったので、私はpublicとして設定しました。 –

+0

素晴らしい幸運。 –

答えて

0

あなたはこの試しくださいテキスト

の誤っRequestBodyを作成している:私はあなたのアンドロイドのコードはASP.netコードにいくつかの問題がある細かい作業だと思う

RequestBody user = RequestBody.create(MediaType.parse("text/plain"), token.getUserId()); 
+0

私のuseridプロパティにpublic修飾子Hiteshがありませんでした。今はうまくいきます!あなたの助けをありがとう! –