java后台上传附件-HttpURLConnection

1、定义写一个上传附件的jsp文件uploadfile.jsp

<%@ page language="java" pageEncoding="UTF-8"%>

<%@page import="java.io.*;"%>

<html>

<body>

    <%

        InputStream in = request.getInputStream();

        request.setCharacterEncoding("utf-8");

        String name = request.getHeader("filename");

        if (name != null && !"".equals(name)) {

            String savepath = request.getHeader("savepath");

            String path = request.getSession().getServletContext()

                    .getRealPath("/");

            File file = new File(path + "\\" + savepath + "\\" + name);

            FileOutputStream fos = new FileOutputStream(file);

            byte[] buffer = new byte[1024];

            int bytes = 0;

            while ((bytes = in.read(buffer)) != -1) {

                fos.write(buffer, 0, bytes);

            }

            fos.flush();

            fos.close();

            in.close();

        }

    %>

</body>

</html>



2、java代码,通过后台代码调用url上传附件

public static void httpConnectionUpload(String fname,String savepath,InputStream ins) {

        try {

            /****urlStr为http://localhost:7001/DOCLINKS/uploadfile.jsp**/

            String urlStr=PropertiesHelper.getValue("httpconn.upload.url");

            URL url = new URL(urlStr);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setDoOutput(true);

            conn.setDoInput(true);

            conn.setChunkedStreamingMode(1024 * 1024);

            conn.setRequestMethod("POST");

            conn.setRequestProperty("connection", "Keep-Alive");

            conn.setRequestProperty("Charsert", "UTF-8");

            conn.setRequestProperty("Content-Type", "multipart/form-data;charset=utf-8;file=" +fname);

            conn.setRequestProperty("filename", fname);//文件名

            conn.setRequestProperty("savepath", savepath);//存储文件夹

            OutputStream out = new DataOutputStream(conn.getOutputStream());

            DataInputStream in = new DataInputStream(ins);

            int bytes = 0;

            byte[] bufferOut = new byte[1024];

            while ((bytes = in.read(bufferOut)) != -1) {

                out.write(bufferOut, 0, bytes);

            }

            in.close();

            out.flush();

            out.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

猜你喜欢

转载自awen7916.iteye.com/blog/2204903