问题描述
- Android上传多张图片到服务器
- 单张上传我已经成功了,不知道怎么处理多张图片上传,求求求求解!!!
解决方案
http://download.csdn.net/download/javalishilong/6312977
解决方案二:
private void toUploadFile(File file String fileKey String RequestURL
Map param) {
String result = null;
requestTime= 0;
long requestTime = System.currentTimeMillis(); long responseTime = 0; try { URL url = new URL(RequestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(readTimeOut); conn.setConnectTimeout(connectTimeout); conn.setDoInput(true); // 允许输入流 conn.setDoOutput(true); // 允许输出流 conn.setUseCaches(false); // 不允许使用缓存 conn.setRequestMethod(""POST""); // 请求方式 conn.setRequestProperty(""Charset"" CHARSET); // 设置编码 conn.setRequestProperty(""connection""keep-alive""); conn.setRequestProperty(""user-agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)""); conn.setRequestProperty(""Content-Type"" CONTENT_TYPE + "";boundary="" + BOUNDARY);
// conn.setRequestProperty(""Content-Type""application/x-www-form-urlencoded"");
/** * 当文件不为空,把文件包装并且上传 */ DataOutputStream dos = new DataOutputStream(conn.getOutputStream()); StringBuffer sb = null; String params = """"; /*** * 以下是用于上传参数 */ if (param != null && param.size() > 0) { Iterator<String> it = param.keySet().iterator(); while (it.hasNext()) { sb = null; sb = new StringBuffer(); String key = it.next(); String value = param.get(key); sb.append(PREFIX).append(BOUNDARY).append(LINE_END); sb.append(""Content-Disposition: form-data; name="""").append(key).append("""""").append(LINE_END).append(LINE_END); sb.append(value).append(LINE_END); params = sb.toString(); Log.i(TAG key+""=""+params+""##""); dos.write(params.getBytes());
// dos.flush();
}
}
sb = null; params = null; sb = new StringBuffer(); /** * 重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件 * filename是文件的名字,包含后缀名的 比如:abc.png */ sb.append(PREFIX).append(BOUNDARY).append(LINE_END); sb.append(""Content-Disposition:form-data; name="""" + fileKey + """"; filename="""" + file.getName() + """""" + LINE_END); sb.append(""Content-Type:image/pjpeg"" + LINE_END); // 这里配置的Content-type很重要的 ,用于服务器端辨别文件的类型的 sb.append(LINE_END); params = sb.toString(); sb = null; Log.i(TAG file.getName()+""="" + params+""##""); dos.write(params.getBytes()); /**上传文件*/ InputStream is = new FileInputStream(file); onUploadProcessListener.initUpload((int)file.length()); byte[] bytes = new byte[1024]; int len = 0; int curLen = 0; while ((len = is.read(bytes)) != -1) { curLen += len; dos.write(bytes 0 len); onUploadProcessListener.onUploadProcess(curLen); } is.close(); dos.write(LINE_END.getBytes()); byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes(); dos.write(end_data); dos.flush();
//
// dos.write(tempOutputStream.toByteArray());
/**
* 获取响应码 200=成功 当响应成功,获取响应的流
*/
int res = conn.getResponseCode();
responseTime = System.currentTimeMillis();
requestTime = (int) ((responseTime-requestTime)/1000);
Log.e(TAGresponse code:"" + res);
if (res == 200) {
Log.e(TAGrequest success"");
InputStream input = conn.getInputStream();
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = input.read()) != -1) {
sb1.append((char) ss);
}
result = sb1.toString();
Log.e(TAGresult : "" + result);
sendMessage(UPLOAD_SUCCESS_CODE上传结果:""
+ result);
return;
} else {
Log.e(TAGrequest error"");
sendMessage(UPLOAD_SERVER_ERROR_CODE上传失败:code="" + res);
return;
}
} catch (MalformedURLException e) {
sendMessage(UPLOAD_SERVER_ERROR_CODE上传失败:error="" + e.getMessage());
e.printStackTrace();
return;
} catch (IOException e) {
sendMessage(UPLOAD_SERVER_ERROR_CODE上传失败:error="" + e.getMessage());
e.printStackTrace();
return;
}
}
这是我的部分代码,请问怎么改啊?
解决方案三:
Android上传多张图片到服务器上传视频到服务器......
答案就在这里:Android 上传多张图片到服务器
解决方案四:
给个循环 一张一张传也可以吧,有多少张图片调用多少次上传的方法
解决方案五:
循环的方式 上传,试一试。QQ空间上传图片不就是一张张上传吗