我正在开发一个类似于OLX的Android应用,允许用户在图库中添加广告和课程选择图片以上传到我的服务器上。但上传大图片需要很长时间。
如何解决此问题?
我使用 Volley库上传图片。有没有更好的图书馆?
答案 0 :(得分:1)
你的问题很广泛,但这里有一些想法:
前两点你会看到很高的性能提升,如果你离地理位置的服务器很远,你可能只会看到最后一点的改善。
答案 1 :(得分:0)
使用此
Retrofit retrofit = new Retrofit.Builder().client(okHttpClient).baseUrl(domain)
.addConverterFactory(GsonConverterFactory.create()).build();
Service service = retrofit.create(Service.class);
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
final MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), requestBody);
final RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
Call<ServerResponse> upload = service.uploadFile(fileToUpload, filename);
upload.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, final Response<ServerResponse> response) {
final ServerResponse serverResponse = response.body();
if (serverResponse.getSuccess()) {
//Handle Response
}
}
@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {
if(t instanceof SocketTimeoutException){
Toast.makeText(getApplicationContext(), "Unable To Upload\nError: Socket Time out. Please try again", Toast.LENGTH_LONG).show();
}
t.printStackTrace();
}
});
服务接口
public interface Service {
@Multipart
@POST("path/upload.php")
Call<ServerResponse> uploadFile(@Part MultipartBody.Part file, @Part("file") RequestBody name);
}