美文网首页
URL对外部网络文件的操作

URL对外部网络文件的操作

作者: 吃猫的鱼0 | 来源:发表于2018-02-02 11:12 被阅读0次

包结构

|---src
    |---log4j-1.2.17.jar
    |---slf4j-log4j12-1.7.5.jar
|---lib
    |---\com\zy\demo
        |---DoTest.java
        |---HttpPostUtil.java
        |---NetUtils.java

代码

DoTest.java

package com.zy.demo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.junit.Test;
public class DoTest {

    @SuppressWarnings("static-access")
    public void test() throws IOException{
        NetUtils demo=new NetUtils();
        InputStream inputStream = demo.fileNetDownload("http://s4.51cto.com/wyfs02/M00/87/DF/wKioL1fjxXeySkcbAAAXTyCeiFM428.jpg-wh_651x-s_4234295533.jpg");
//      InputStream inputStream = demo.fileDownload("http://music.baidu.com/pc/download//BaiduMusic-17011816.exe");
         UUID key=UUID.randomUUID();     
        OutputStream outputStream = new FileOutputStream("D:\\测试\\"+key+".jpeg");
        byte[] mByte = new byte[1024*1024*3];
        int num = 0;
        while ((num = inputStream.read(mByte)) != -1) {
            outputStream.write(mByte, 0, num);
        }
        outputStream.close();
        inputStream.close();
    }
    public void post() {
        Map< String, String> map=new HashMap<>();
        map.put("name", "NAME");
        //正常
//      String post = NetUtils.post("http://192.168.0.121:8090/YouGuoApp/SetUp/getNewApkVersion.do",map);
        //正常
//      String post = NetUtils.post("http://192.168.0.121:8090/YouGuoApp/SetUp/getNewApkVersion.do",NetUtils.changeMapToBody(map));
        //参数过去了
        String post = NetUtils.sendGet("http://192.168.0.121:8090/YouGuoApp/SetUp/getNewApkVersion.do",NetUtils.changeMapToBody(map));
        //正常
//      String post = NetUtils.get("http://192.168.0.121:8090/YouGuoApp/SetUp/getNewApkVersion.do?name=7898456");       
        System.out.println(post);
    }
    @Test
    public void upload(){
        File file = new File("D:\\测试\\14465a72-cad3-40e5-a2ee-fabc147e92a1.jpeg");
//      String fileLocalUpdate =HttpConnectionUtil.uploadFile("http://192.168.0.121:8090/YouGuoApp/file/uploadOneFile.do",new String[] { "D:\\测试\\14465a72-cad3-40e5-a2ee-fabc147e92a1.jpeg"});
//      String fileLocalUpdate = NetUtils.fileLocalUpdate("D:\\测试\\14465a72-cad3-40e5-a2ee-fabc147e92a1.jpeg", "http://192.168.0.121:8090/YouGuoApp/file/uploadOneFile.do");
        System.out.println(file.getName());
    }
}

HttpPostUtil.java

package com.zy.demo;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class HttpPostUtil {
    URL url;
    HttpURLConnection conn;
    String boundary = "--------httppost123";
    Map<String, String> textParams = new HashMap<String, String>();
    Map<String, File> fileparams = new HashMap<String, File>();
    DataOutputStream ds;

    public HttpPostUtil(String url) throws Exception {
        this.url = new URL(url);
    }
    //重新设置要请求的服务器地址,即上传文件的地址。
    public void setUrl(String url) throws Exception {
        this.url = new URL(url);
    }
    //增加一个普通字符串数据到form表单数据中
    public void addTextParameter(String name, String value) {
        textParams.put(name, value);
    }
    //增加一个文件到form表单数据中
    public void addFileParameter(String name, File value) {
        fileparams.put(name, value);
    }
    // 清空所有已添加的form表单数据
    public void clearAllParameters() {
        textParams.clear();
        fileparams.clear();
    }
    // 发送数据到服务器,返回一个字节包含服务器的返回结果的数组
    public byte[] send() throws Exception {
        initConnection();
        try {
            conn.connect();
        } catch (SocketTimeoutException e) {
            // something
            throw new RuntimeException();
        }
        ds = new DataOutputStream(conn.getOutputStream());
        writeFileParams();
        writeStringParams();
        paramsEnd();
        InputStream in = conn.getInputStream();
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int b;
        while ((b = in.read()) != -1) {
            out.write(b);
        }
        conn.disconnect();
        return out.toByteArray();
    }
    //文件上传的connection的一些必须设置
    private void initConnection() throws Exception {
        conn = (HttpURLConnection) this.url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setConnectTimeout(10000); //连接超时为10秒
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "multipart/form-data; boundary=" + boundary);
    }
    //普通字符串数据
    private void writeStringParams() throws Exception {
        Set<String> keySet = textParams.keySet();
        for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
            String name = it.next();
            String value = textParams.get(name);
            ds.writeBytes("--" + boundary + "\r\n");
            ds.writeBytes("Content-Disposition: form-data; name=\"" + name
                    + "\"\r\n");
            ds.writeBytes("\r\n");
            ds.writeBytes(encode(value) + "\r\n");
        }
    }
    //文件数据
    private void writeFileParams() throws Exception {
        Set<String> keySet = fileparams.keySet();
        for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
            String name = it.next();
            File value = fileparams.get(name);
            ds.writeBytes("--" + boundary + "\r\n");
            ds.writeBytes("Content-Disposition: form-data; name=\"" + name
                    + "\"; filename=\"" + encode(value.getName()) + "\"\r\n");
            ds.writeBytes("Content-Type: " + getContentType(value) + "\r\n");
            ds.writeBytes("\r\n");
            ds.write(getBytes(value));
            ds.writeBytes("\r\n");
        }
    }
    //获取文件的上传类型,图片格式为image/png,image/jpg等。非图片为application/octet-stream
    private String getContentType(File f) throws Exception {
        
//      return "application/octet-stream";  // 此行不再细分是否为图片,全部作为application/octet-stream 类型
        ImageInputStream imagein = ImageIO.createImageInputStream(f);
        if (imagein == null) {
            return "application/octet-stream";
        }
        Iterator<ImageReader> it = ImageIO.getImageReaders(imagein);
        if (!it.hasNext()) {
            imagein.close();
            return "application/octet-stream";
        }
        imagein.close();
        return "image/" + it.next().getFormatName().toLowerCase();//将FormatName返回的值转换成小写,默认为大写

    }
    //把文件转换成字节数组
    private byte[] getBytes(File f) throws Exception {
        FileInputStream in = new FileInputStream(f);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] b = new byte[1024];
        int n;
        while ((n = in.read(b)) != -1) {
            out.write(b, 0, n);
        }
        in.close();
        return out.toByteArray();
    }
    //添加结尾数据
    private void paramsEnd() throws Exception {
        ds.writeBytes("--" + boundary + "--" + "\r\n");
        ds.writeBytes("\r\n");
    }
    // 对包含中文的字符串进行转码,此为UTF-8。服务器那边要进行一次解码
    private String encode(String value) throws Exception{
        return URLEncoder.encode(value, "UTF-8");
    }
    public static void main(String[] args) throws Exception {
        HttpPostUtil u = new HttpPostUtil("http://192.168.0.121:8090/YouGuoApp/file/uploadOneFile.do");
        u.addFileParameter("img", new File("D:\\测试\\14465a72-cad3-40e5-a2ee-fabc147e92a1.jpeg"));
        u.addTextParameter("text", "lalalalaal");
        byte[] b = u.send();
        String result = new String(b);
        System.out.println(result);

    }

}

NetUtils.java

package com.zy.demo;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

import org.apache.log4j.Logger;

public class NetUtils {
    static String boundary = "--------httppost123";
    private static Logger logger = Logger.getLogger(NetUtils.class);

    /**
     * 将map请求参数格式化
     * 
     * @param ParamsMap
     *            请求的参数
     * @return 格式化后的参数
     */
    public static String changeMapToBody(Map<String, String> ParamsMap) {
        StringBuffer params = new StringBuffer();
        // 组织请求参数
        Iterator<?> it = ParamsMap.entrySet().iterator();
        while (it.hasNext()) {
            @SuppressWarnings("rawtypes")
            Map.Entry element = (Map.Entry) it.next();
            params.append(element.getKey());
            params.append("=");
            params.append(element.getValue());
            params.append("&");
        }
        if (params.length() > 0) {
            params.deleteCharAt(params.length() - 1);
        }
        return params.toString();
    }

    /**
     * post发出网络请求 post请求
     * 
     * @param url
     *            功能和操作
     * @param body
     *            要post的数据 String body = "accountSid=" + ACCOUNT_SID + "&to=" +
     *            tel + "&templateid=" + templateid + "&param=" + param+
     *            createCommonParam();
     * @return 请求返回的数据
     * @throws IOException
     */
    public static String sendPost(String url, String body) {
        String result = "";
        try {
            OutputStreamWriter out = null;
            BufferedReader in = null;
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();

            // 设置连接参数
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(20000);

            // 提交数据
            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
            out.write(body);
            out.flush();
            // 读取返回数据
            in = new BufferedReader(new InputStreamReader(
                    conn.getInputStream(), "UTF-8"));
            String line;
            boolean firstLine = true; // 读第一行不加换行符
            while ((line = in.readLine()) != null) {
                if (firstLine) {
                    firstLine = false;
                } else {
                    result += System.lineSeparator();
                }
                result += line;
            }
        } catch (Exception e) {
            e.printStackTrace();
            // 异常返回空
            return result;
        }
        return result;
    }

    /**
     * post发出网络请求 post请求
     * 
     * @param requestUrl
     *            请求地址
     * @param requestParamsMap
     *            请求参数map
     * @return 请求返回的数据
     */
    public static String sendPost(String requestUrl,
            Map<String, String> requestParamsMap) {

        PrintWriter printWriter = null;
        HttpURLConnection httpURLConnection = null;
        BufferedReader bufferedReader = null;
        StringBuffer params = new StringBuffer();
        StringBuffer responseResult = new StringBuffer();

        // 组织请求参数
        Iterator<?> it = requestParamsMap.entrySet().iterator();
        while (it.hasNext()) {
            @SuppressWarnings("rawtypes")
            Map.Entry element = (Map.Entry) it.next();
            params.append(element.getKey());
            params.append("=");
            params.append(element.getValue());
            params.append("&");
        }
        if (params.length() > 0) {
            params.deleteCharAt(params.length() - 1);
        }
        try {

            URL realUrl = new URL(requestUrl);
            // 打开和URL之间的连接
            httpURLConnection = (HttpURLConnection) realUrl.openConnection();
            // 设置通用的请求属性
            httpURLConnection.setRequestProperty("accept", "*/*");
            httpURLConnection.setRequestProperty("connection", "Keep-Alive");
            httpURLConnection.setRequestProperty("Content-Length",
                    String.valueOf(params.length()));
            httpURLConnection.setRequestProperty("Charset", "UTF-8");
            httpURLConnection.setRequestProperty("content-type",
                    "application/x-www-form-urlencoded;charset=UTF-8");
            // 发送POST请求必须设置如下两行
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);

            httpURLConnection.setRequestMethod("POST");// 设置URL请求方法

            httpURLConnection.setConnectTimeout(50000);// 设置连接超时
            // 如果在建立连接之前超时期满,则会引发一个
            // java.net.SocketTimeoutException。超时时间为零表示无穷大超时。

            httpURLConnection.setReadTimeout(50000);// 设置读取超时
            // 如果在数据可读取之前超时期满,则会引发一个
            // java.net.SocketTimeoutException。超时时间为零表示无穷大超时。

            // 获取URLConnection对象对应的输出流
            printWriter = new PrintWriter(httpURLConnection.getOutputStream());
            // 发送请求参数
            printWriter.write(params.toString());
            // flush输出流的缓冲
            printWriter.flush();
            // 根据ResponseCode判断连接是否成功
            int responseCode = httpURLConnection.getResponseCode();
            if (responseCode != 200) {
                logger.debug("发送请求错误!" + responseCode);
                return "发送请求错误!" + responseCode;
            } else {
                logger.debug("发送请求成功!");
                System.out.println("发送请求成功!");
            }

            // 定义BufferedReader输入流来读取URL的ResponseData
            bufferedReader = new BufferedReader(new InputStreamReader(
                    httpURLConnection.getInputStream(), "UTF-8"));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                responseResult.append(line);
            }

        } catch (Exception e) {
            logger.debug("发送请求异常!" + e);
        } finally {

            httpURLConnection.disconnect();
            try {

                if (printWriter != null) {
                    printWriter.close();
                }
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }

        }

        return responseResult.toString();
    }

    /**
     * get发出网络请求 get请求
     * 
     * @param url
     *            功能和操作
     * @param map
     *            请求的map
     * @return 请求返回的数据
     */
    public static String sendGet(String netPath, Map<String, String> map) {
        String body = changeMapToBody(map);
        netPath = netPath + "?" + body;
        String result = sendGet(netPath);
        return result;
    }

    /**
     * get发出网络请求 get请求
     * 
     * @param url
     *            功能和操作
     * @param body
     *            要get的数据 String body = "accountSid=" + ACCOUNT_SID + "&to=" +
     *            tel + "&templateid=" + templateid + "&param=" + param+
     *            createCommonParam();
     * @return 请求返回的数据
     */
    public static String sendGet(String netPath, String body) {
        netPath = netPath + "?" + body;
        String result = sendGet(netPath);
        return result;
    }

    /**
     * get 从网络获取数据
     * 
     * @param path
     * @return 请求返回的数据
     */
    public static String sendGet(String path) {
        try {
            URL url = new URL(path.trim());
            // 打开连接
            HttpURLConnection urlConnection = (HttpURLConnection) url
                    .openConnection();

            if (200 == urlConnection.getResponseCode()) {
                // 得到输入流
                InputStream is = urlConnection.getInputStream();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
                while (-1 != (len = is.read(buffer))) {
                    baos.write(buffer, 0, len);
                    baos.flush();
                }
                return baos.toString("utf-8");
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return null;
    }

    /**
     * 从网络下载文件
     * 
     * @param netPath
     *            文件的网络地址
     * @return InputStream io输入流
     */
    public static InputStream fileNetDownload(String netPath) {
        URL url = null;
        try {
            url = new URL(netPath);
        } catch (MalformedURLException e) {
            logger.debug("网络路径有误");
            // 网络路径有误
            return null;
        }
        URLConnection con = null;
        try {
            con = url.openConnection();
        } catch (IOException e) {
            logger.debug("网络路径有误");
            // 网络路径有误对象为空
            return null;
        }
        con.setConnectTimeout(1000);
        InputStream inputStream = null;
        try {
            inputStream = con.getInputStream();
        } catch (IOException e) {
            logger.debug("网络路径有误");
            // 网络路径有误对象为空
            return null;
        }
        return inputStream;
    }

/**
 * 网络文件上传
 * @param textParams参数的map(上传参数的key, 上传参数的值)
 * @param fileparams(Spring上传取值的键, inputStream)
 * @param filename(Spring上传取值的键, 文件的名称加后缀)
 * @param netToPath (上传的地址)
 * @return  对方返回的结果
 * @throws Exception
 */
    public static String inputStreamAndParamsUpload(
            Map<String, String> textParams,
            Map<String, InputStream> fileparams, Map<String, String> filename,
            String netToPath) throws Exception {
        String result = "";
        try {
            HttpURLConnection conn = initConnection(netToPath);
            conn.connect();// 建立连接
            DataOutputStream dataOutputStream = new DataOutputStream(
                    conn.getOutputStream());
            // 如果参数map不为空并且size大于0则填写参数
            if (fileparams != null && fileparams.size() > 0) {
                // 填写文件file
                writeFileParams(dataOutputStream, fileparams, filename);
            }
            // 如果参数map不为空并且size大于0则填写参数
            if (textParams != null && textParams.size() > 0) {
                // 填写参数map
                writeStringParams(dataOutputStream, textParams);
            }
            paramsEnd(dataOutputStream);
            InputStream in = conn.getInputStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int b;
            while ((b = in.read()) != -1) {
                out.write(b);
            }
            conn.disconnect();
            result = new String(out.toByteArray());
        } catch (Exception e) {
            logger.debug("上传失败");
            return null;
        }
        return result;
    }

    /**
     * 本地文件和参数上传 如果文件map为空或者size为0则则默认不传, 如果参数map为空或者size为0则则默认不传,
     * 
     * @param textParams
     *            参数的map(上传参数的key, 上传参数的值)
     * @param fileparams
     *            文件路径的(Spring上传取值的键, 本地文件的路径)
     * @param netToPath
     * @return
     */
    public static String fileAndParamsUpload(Map<String, String> textParams,
            Map<String, String> fileparams, String netToPath) {
        String result = "";
        try {
            HttpURLConnection conn;
            conn = initConnection(netToPath);
            conn.connect();// 建立连接
            DataOutputStream dataOutputStream = new DataOutputStream(
                    conn.getOutputStream());
            // 如果参数map不为空并且size大于0则填写参数
            if (fileparams != null && fileparams.size() > 0) {
                // 填写文件file
                writeFileParams(dataOutputStream, fileparams);
            }
            // 如果参数map不为空并且size大于0则填写参数
            if (textParams != null && textParams.size() > 0) {
                // 填写参数map
                writeStringParams(dataOutputStream, textParams);
            }
            paramsEnd(dataOutputStream);
            InputStream in = conn.getInputStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int b;
            while ((b = in.read()) != -1) {
                out.write(b);
            }
            conn.disconnect();
            result = new String(out.toByteArray());
        } catch (Exception e) {
            logger.debug("上传失败");
            return null;
        }
        return result;
    }

    /**
     * 填写上传参数数据
     * 
     * @param dataOutputStream
     * @throws Exception
     */
    private static void writeStringParams(DataOutputStream dataOutputStream,
            Map<String, String> textParams) throws Exception {
        Set<String> keySet = textParams.keySet();
        for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
            String name = it.next();
            String value = textParams.get(name);
            dataOutputStream.writeBytes("--" + boundary + "\r\n");
            dataOutputStream
                    .writeBytes("Content-Disposition: form-data; name=\""
                            + name + "\"\r\n");
            dataOutputStream.writeBytes("\r\n");
            dataOutputStream.writeBytes(encode(value) + "\r\n");
        }
    }

    /**
     * 填写上传文件数据
     * 
     * @param dataOutputStream
     * @throws Exception
     * @throws IOException
     */
    private static void writeFileParams(DataOutputStream dataOutputStream,
            Map<String, String> fileparams) throws IOException, Exception {
        Set<String> keySet = fileparams.keySet();
        for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
            String name = it.next();
            File value = new File(fileparams.get(name));
            dataOutputStream.writeBytes("--" + boundary + "\r\n");
            dataOutputStream
                    .writeBytes("Content-Disposition: form-data; name=\""
                            + name + "\"; filename=\""
                            + encode(value.getName()) + "\"\r\n");
            dataOutputStream.writeBytes("Content-Type: "
                    + getContentType(value) + "\r\n");
            dataOutputStream.writeBytes("\r\n");
            FileInputStream fileInputStream = new FileInputStream(value);
            dataOutputStream.write(getBytes(fileInputStream));
            dataOutputStream.writeBytes("\r\n");
        }
    }

    /**
     * 填写上传文件数据
     * 
     * @param dataOutputStream
     * @throws Exception
     * @throws IOException
     */
    private static void writeFileParams(DataOutputStream dataOutputStream,
            Map<String, InputStream> fileparams, Map<String, String> filename)
            throws IOException, Exception {
        Set<String> keySet = fileparams.keySet();
        for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
            String name = it.next();
            InputStream value = fileparams.get(name);
            dataOutputStream.writeBytes("--" + boundary + "\r\n");
            dataOutputStream
                    .writeBytes("Content-Disposition: form-data; name=\""
                            + name + "\"; filename=\""
                            + encode(filename.get(name)) + "\"\r\n");
            dataOutputStream.writeBytes("Content-Type: "
                    + getContentType(value) + "\r\n");
            dataOutputStream.writeBytes("\r\n");
            dataOutputStream.write(getBytes(value));
            dataOutputStream.writeBytes("\r\n");
        }
    }

    /**
     * 初始化HttpURLConnection对象
     * 
     * @param netToPath
     * @return
     * @throws IOException
     */
    private static HttpURLConnection initConnection(String netToPath)
            throws IOException {
        // 统一资源
        HttpURLConnection conn = null;
        URL url = new URL(netToPath);
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setConnectTimeout(10000); // 连接超时为10秒
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "multipart/form-data; boundary=" + boundary);
        return conn;
    }

    /**
     * 对文字进行编码
     * 
     * @param value
     * @return
     * @throws Exception
     */
    private static String encode(String value) throws Exception {
        return URLEncoder.encode(value, "UTF-8");
    }

    /**
     * 获取文件的上传类型,图片格式为image/png,image/jpg等。非图片为application/octet-stream
     * 
     * @param f
     * @return
     * @throws Exception
     */
    private static String getContentType(InputStream in) throws Exception {

        // return "application/octet-stream"; //
        // 此行不再细分是否为图片,全部作为application/octet-stream 类型
        ImageInputStream imagein = ImageIO.createImageInputStream(in);
        if (imagein == null) {
            return "application/octet-stream";
        }
        Iterator<ImageReader> it = ImageIO.getImageReaders(imagein);
        if (!it.hasNext()) {
            imagein.close();
            return "application/octet-stream";
        }
        imagein.close();
        return "image/" + it.next().getFormatName().toLowerCase();// 将FormatName返回的值转换成小写,默认为大写

    }

    /**
     * 获取文件的上传类型,图片格式为image/png,image/jpg等。非图片为application/octet-stream
     * 
     * @param f
     * @return
     * @throws Exception
     */
    private static String getContentType(File f) throws Exception {

        // return "application/octet-stream"; //
        // 此行不再细分是否为图片,全部作为application/octet-stream 类型
        ImageInputStream imagein = ImageIO.createImageInputStream(f);
        if (imagein == null) {
            return "application/octet-stream";
        }
        Iterator<ImageReader> it = ImageIO.getImageReaders(imagein);
        if (!it.hasNext()) {
            imagein.close();
            return "application/octet-stream";
        }
        imagein.close();
        return "image/" + it.next().getFormatName().toLowerCase();// 将FormatName返回的值转换成小写,默认为大写

    }

    /**
     * 把文件转换成字节数组
     * 
     * @param FileInputStream
     * @return
     * @throws Exception
     */
    private static byte[] getBytes(InputStream in) throws Exception {
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] b = new byte[1024];
        int n;
        while ((n = in.read(b)) != -1) {
            out.write(b, 0, n);
        }
        in.close();
        return out.toByteArray();
    }

    /**
     * 添加结尾数据
     * 
     * @param dataOutputStream
     * @throws IOException
     */
    private static void paramsEnd(DataOutputStream dataOutputStream)
            throws IOException {
        dataOutputStream.writeBytes("--" + boundary + "--" + "\r\n");
        dataOutputStream.writeBytes("\r\n");
    }
}

相关文章

  • URL对外部网络文件的操作

    包结构 代码 DoTest.java HttpPostUtil.java NetUtils.java

  • JAVA IO

    Linux网络I/O模型 Linux的内核将所有外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核...

  • Chapter1 Java I/O演进之路

    1.1.1Linux网络I/O模型 Linux 内核将所有外部设备看做一个文件操作,对一个文件的读写操作会返回一个...

  • JavaIO认识

    Unix网络编程模型 Linux的内核 将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系...

  • I/O基础知识

    一、Linux网络I/O模型简介 Linux的内核将所有外部设备都看做一个文件来操作,对一个文件的读写操作会调用内...

  • 网络相关

    网络相关 Linux内核将所有的外部设备都看作一个文件来操作,对一个文件的读写操作都会调用内核提供的一个系统命令,...

  • 理解epoll多路复用和Reactor设计思想

    1.Linux网络IO模型 在linux系统中所有的外部设备的操作都可以看作是一个文件操作,linux对文件操作的...

  • 如何查看调试手机里的文件?

    因为从外部导入问价到自己的APP内部,还要对文件进行一些操作,那首先就是要获取文件,这是导入的地址://url =...

  • 网络优化

    网路I/O 1、I/O模型 “一切皆文件”,Linux内核会把所有外部设备看做一个文件来操作,在网络I/O中系统对...

  • 网络IO模型

    2. unix网络编程5种IO模型 linux 的内核将所有外部设备都可以看做一个文件来操作,我们对外部设备的操作...

网友评论

      本文标题:URL对外部网络文件的操作

      本文链接:https://www.haomeiwen.com/subject/ptiuoxtx.html