使用Retrofit2.0进行SFTP文件传输

时间:2018-03-26 09:52:28

标签: android retrofit sftp

Retrofit是否为我们提供了在SFTP服务器上上传文件的功能,任何人都可以提供任何示例

1 个答案:

答案 0 :(得分:0)

Retrofit是一个将 HTTP API 转换为Java界面的库。它不适用于任何FTP目的。但您可以使用此库来使用多部分请求上传文件,例如:

private void uploadFile(Uri fileUri) {  
// create upload service client
FileUploadService service =
        ServiceGenerator.createService(FileUploadService.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 = FileUtils.getFile(this, 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("picture", file.getName(), requestFile);

// add another part within the multipart request
String descriptionString = "hello, this is description speaking";
RequestBody description =
        RequestBody.create(
                okhttp3.MultipartBody.FORM, descriptionString);

// finally, execute the request
Call<ResponseBody> call = service.upload(description, body);
call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call,
                           Response<ResponseBody> response) {
        Log.v("Upload", "success");
    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        Log.e("Upload error:", t.getMessage());
    }
});

}