上传图片

来源:互联网 发布:星矢和纱织 知乎 编辑:程序博客网 时间:2024/05/21 22:21
private String uploadAvatar(File file) {        LogUtil.d("uploadAvatar:" + System.currentTimeMillis());        mUploadFile = file;        int TIME_OUT = 60 * 1000; // 超时时间        String CHARSET = "utf-8"; // 设置编码        String SUCCESS = "1";        String FAILURE = "0";        if (file != null && file.isFile()) {            String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成            String PREFIX = "--";            String LINE_END = "\r\n";            String CONTENT_TYPE = "multipart/form-data"; // 内容类型            String requestURL = Urls.UPDATE_HEADER;            requestURL += "?" + Urls.PARAM_TOKEN + "=" + AccountManager.token();            requestURL += "&" + Urls.PARAM_PHONE_ID + "=" + PlatformUtils.id(GoPlusApplication.getApplication());            requestURL += "&" + Urls.PARAM_USERID + "=" + AccountManager.currentUserId();            try {                URL url = new URL(requestURL);                HttpURLConnection conn = (HttpURLConnection) url.openConnection();                conn.setReadTimeout(TIME_OUT);                conn.setConnectTimeout(TIME_OUT);                conn.setDoInput(true); // 允许输入流                conn.setDoOutput(true); // 允许输出流                conn.setUseCaches(false); // 不允许使用缓存                conn.setRequestMethod("POST"); // 请求方式                conn.setRequestProperty("Charset", CHARSET); // 设置编码                conn.setRequestProperty("connection", "keep-alive");                conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);                conn.connect();                /**                 * 当文件不为空,把文件包装并且上传                 */                OutputStream outputSteam = conn.getOutputStream();                DataOutputStream dos = new DataOutputStream(outputSteam);                StringBuffer sb = new StringBuffer();                sb.append(PREFIX);                sb.append(BOUNDARY);                sb.append(LINE_END);                sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"" + LINE_END);                sb.append("Content-Type: multipart/form-data; charset=" + CHARSET + LINE_END);                sb.append(LINE_END);                dos.write(sb.toString().getBytes());                InputStream is = new FileInputStream(file);                byte[] bytes = new byte[10240];                int len = 0;                while ((len = is.read(bytes)) != -1) {                    dos.write(bytes, 0, len);                    LogUtil.d("write:" + len);                }                is.close();                dos.write(LINE_END.getBytes());                byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();                dos.write(end_data);                dos.flush();                LogUtil.d("uploadAvatar get response code:" + System.currentTimeMillis());                InputStream responseIS = conn.getInputStream();                String response = "";                while ((len = responseIS.read(bytes)) != -1) {                    response += new String(bytes, 0, len);                    LogUtil.d("读取相应数据:" + len);                }                LogUtil.d("响应数据:" + response);                /**                 * 获取响应码 200=成功 当响应成功,获取响应的流                 */                int res = conn.getResponseCode();                LogUtil.d("响应码:" + res);                if (res == 200) {              //接收到response      mUploadHeaderCallback.onSucc(response);                    return SUCCESS;                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            mUploadHeaderCallback.onfailed("");            return FAILURE;        } else {            mUploadHeaderCallback.onfailed("");            return FAILURE;        }    }
1 0
原创粉丝点击