文件上传

来源:互联网 发布:网络文明绘画图片大全 编辑:程序博客网 时间:2024/06/06 01:09

最近写项目有一个图片上传的功能,现在项目已经结束啦,我就想着把这个东东贴出来和大家分享一下,希望对大家有所帮助,其实很简单的,大家一看应该就明白了,有什么不明白的,请留言啊吐舌头

上传图片也就是一个方法就搞定啦,那就开始上关键代码吧:

public static String uploadFile(File file, String uploadUrl) {        String result = null;          String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成        String LINE_END = "\r\n";//换行,相当于回车        String CONTENT_TYPE = "multipart/form-data"; // 内容类型        try {        //根据url获取URL对象            URL url = new URL(uploadUrl);            //由URL对象获取HttpURLConnection对象,链接到指定的网络地址            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);            /**             * 当文件不为空,把文件包装并且上传             */            if (file != null) {                //根据链接网络地址的HttpURLConnection对象获取输出流                DataOutputStream dos = new DataOutputStream(conn.getOutputStream());                //上传文件的头部//                StringBuffer sb = new StringBuffer();//                sb.append(PREFIX);//                sb.append(BOUNDARY);//                sb.append(LINE_END);//                /**//                 * 这里重点注意: name里面的值为服务端需要key 只有这个key 才可以得到对应的文件//                 * filename是文件的名字,包含后缀名的 比如:abc.png//                 *///////                sb.append("Content-Disposition: form-data; name=\"uploadfile\"; filename=\""//                        + file.getName() + "\"" + LINE_END);//                sb.append("Content-Type: application/octet-stream; charset=" + CHARSET + LINE_END);//                sb.append(LINE_END);//                dos.write(sb.toString().getBytes());                                //创建InputStream对象                InputStream is = new FileInputStream(file);                //缓存数组                byte[] bytes = new byte[1024];                int len = 0;                while ((len = is.read(bytes)) != -1) {                    dos.write(bytes, 0, len);                }                is.close();                //换行                dos.write(LINE_END.getBytes());                dos.flush();                /**                 * 获取响应码 200=成功 当响应成功,获取响应的流                 */                int res = conn.getResponseCode();                // if(res==200)                // {                InputStream input = conn.getInputStream();                StringBuffer sb1 = new StringBuffer();                int ss;                while ((ss = input.read()) != -1) {                    sb1.append((char) ss);                }                //服务器返回的数据                result = sb1.toString();                // }                // else{                // Log.e(TAG, "request error");                // }            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }

注释已经写得很详细啦,其他我就不多说啦!

0 0
原创粉丝点击