我想通过使用图像抽射多,也想展示图片上传过程中的进度对话框上传。
我用this code for show progress dialog当图像被上载,也check this code for this.
并使用下面的代码上传。
public void doFileUpload(ArrayList<MyUploadImage> images){
try {
//MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
//entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
JSONObject jo = new JSONObject();
jo.put("NoOfImages", images.size());
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(link);
CustomMultiPartEntity multipartContent = new CustomMultiPartEntity(new ProgressListener()
{
@Override
public void transferred(long num)
{
pd.setProgress((int) ((num / (float) totalSize) * 100));
}
});
//MultipartEntity reqEntity = new MultipartEntity();
int size = images.size();
for(int i = 0; i < size; i++){
FileBody bin1 = new FileBody(images.get(i).getImageFile());
multipartContent.addPart(("uploaded_file"+i), bin1);
}
multipartContent.addPart("girish", new StringBody(jo.toString()));
totalSize = multipartContent.getContentLength();
post.setEntity(multipartContent);
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
final String response_str = EntityUtils.toString(resEntity);
Log.e("Response", response_str);
pd.dismiss();
} catch (ClientProtocolException e) {
e.printStackTrace();
pd.dismiss();
} catch (Exception e) {
e.printStackTrace();
pd.dismiss();
}
}
谢谢
凌空犯规多部分提供支持。但你仍然可以使用凌空的框架,并提供你自己的实现HttpStack的,就像我们用于SSL连接。
public class MultiPartRequest extends JsonRequest<JSONObject> {
/* To hold the parameter name and the File to upload */
private Map<String,File> fileUploads = new HashMap<String,File>();
/* To hold the parameter name and the string content to upload */
private Map<String,String> stringUploads = new HashMap<String,String>();
public void addFileUpload(String param,File file) {
fileUploads.put(param,file);
}
public void addStringUpload(String param,String content) {
stringUploads.put(param,content);
}
public Map<String,File> getFileUploads() {
return fileUploads;
}
public Map<String,String> getStringUploads() {
return stringUploads;
}
}
而在你HttpStack实施,创建MultiPartEntity并将其设置为HttpRequest的。请参阅有关详细信息,SslHttpStack createHttpRequest方法。
private static void setMultiPartBody(HttpEntityEnclosingRequestBase httpRequest, Request<?> request) throws AuthFailureError {
// Return if Request is not MultiPartRequest
if(request instanceof MultiPartRequest == false) {
return;
}
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
//Iterate the fileUploads
Map<String,File> fileUpload = ((MultiPartRequest)request).getFileUploads();
for (Map.Entry<String, File> entry : fileUpload.entrySet()) {
multipartEntity.addPart(((String)entry.getKey()), new FileBody((File)entry.getValue()));
}
//Iterate the stringUploads
Map<String,String> stringUpload = ((MultiPartRequest)request).getStringUploads();
for (Map.Entry<String, String> entry : stringUpload.entrySet()) {
try {
multipartEntity.addPart(((String)entry.getKey()), new StringBody((String)entry.getValue()));
} catch (Exception e) {
e.printStackTrace();
}
}
httpRequest.setEntity(multipartEntity);
}
在这里看到这soluction:https://github.com/smanikandan14/Volley-demo