J'essaye de télécharger le fichier en utilisant le retrofit, l'envoyer du côté du serveur et enregistrer ce fichier dans mon dossier de téléchargement.Fonction api web correspondante pour accepter le fichier
Ceci est mon exemple API de rénovation:
@Multipart
@POST("file/uploaddocument")
Call<ResponseBody> uploadFile(@Part MultipartBody.Part file);
UploadFile:
private void uploadFile(Uri fileUri) {
// create upload service client
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
MyApiEndpointInterface apiService =
retrofit.create(MyApiEndpointInterface.class);
// https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
// use the FileUtils to get the actual file by uri
File file = Utils.getFileForUri(fileUri);
// create RequestBody instance from file
RequestBody requestFile =
RequestBody.create(
MediaType.parse(getContentResolver().getType(fileUri)),
file
);
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part body =
MultipartBody.Part.createFormData("file", file.getName(), requestFile);
// finally, execute the request
Call<ResponseBody> call = apiService.uploadFile(body);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call,
Response<ResponseBody> response) {
UploadProgressDialog.dismiss();
Log.v("Upload", "success");
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
UploadProgressDialog.dismiss();
Log.e("Upload error:", t.getMessage());
}
});
}
et j'appelle cette méthode sur le bouton clic comme:
uploadFile(myfileuri);
Ceci est mon Web Appel API (Est-ce correct? Si non, comment accepter l'image du côté client?)
<HttpPost>
<Route("api/File/UploadDocument", Name:="UploadDocument")>
Public Function Upload() As HttpResponseMessage
Try
Dim UploadedPath As String = HttpContext.Current.Server.MapPath("~/UploadedFiles")
Dim httpRequest = HttpContext.Current.Request
If httpRequest.Files.Count > 0 Then
For Each file As String In httpRequest.Files
Dim postedFile = httpRequest.Files(file)
postedFile.SaveAs(UploadedPath + "/")
Next
Else
End If
Dim message = Request.CreateResponse(HttpStatusCode.OK, "True")
Return message
Catch ex As Exception
Return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)
End Try
End Function