当前位置: 代码迷 >> Android >> android上传图片,靠山得不到file
  详细解决方案

android上传图片,靠山得不到file

热度:135   发布时间:2016-05-01 10:54:17.0
android上传图片,后台得不到file
Activity 获取时没有问题,都能打印出picPath 
上传都可以打印出file的path和name
public class UploadUtil {
private static final String TAG = "uploadFile";
private static final int TIME_OUT = 10 * 1000; // 锟斤拷时时锟斤拷
private static final String CHARSET = "utf-8"; // 锟斤拷锟矫憋拷锟斤拷
private int readTimeOut = 10 * 1000; // 读取超时
private int connectTimeout = 10 * 1000; // 超时时间
private static final String BOUNDARY = UUID.randomUUID().toString(); // 边界标识
// 随机生成
private static final String PREFIX = "--";
private static final String LINE_END = "\r\n";
private static final String CONTENT_TYPE = "multipart/form-data"; // 内容类型

public int uploadFile(File file, String RequestURL, int id, String table) {
int res = 0;
                Log.e("file", file.getName()+ "  " + file.getPath());
long requestTime = System.currentTimeMillis();
long responseTime = 0;
String result = "";
String getUrl = RequestURL + "/Upload.action";
try {
URL url = new URL(getUrl);
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);


DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
StringBuffer sb = null;
String params = "";



sb = null;
params = null;
sb = new StringBuffer();
sb.append(PREFIX).append(BOUNDARY).append(LINE_END);
sb.append("Content-Disposition:form-data; name=\"" + "pic"
+ "\"; filename=\"" + file.getName() + "\"" + LINE_END);
sb.append("Content-Type:image/pjpeg" + LINE_END); 

sb.append(LINE_END);
params = sb.toString();
sb = null;

Log.i(TAG, file.getName() + "=" + params + "##");
dos.write(params.getBytes());

InputStream is = new FileInputStream(file);

byte[] bytes = new byte[1024];
int len = 0;
int curLen = 0;
while ((len = is.read(bytes)) != -1) {
curLen += len;
dos.write(bytes, 0, len);

}
is.close();

dos.write(LINE_END.getBytes());
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END)
  相关解决方案