java 后台上传文件

public static String uploadFile(File file, String RequestURL) throws IOException {
        String result = null;
        String BOUNDARY = "letv"; // 边界标识 随机生成
        String PREFIX = "--", LINE_END = "\r\n";
        String CONTENT_TYPE = "multipart/form-data"; // 内容类型

        try {
            URL  url = new URL(RequestURL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(6000);
            conn.setConnectTimeout(6000);
            conn.setDoInput(true); // 允许输入流
            conn.setDoOutput(true); // 允许输出流
            conn.setUseCaches(false); // 不允许使用缓存
            conn.setRequestMethod("POST"); // 请求方式
            conn.setRequestProperty("Charset", "utf-8"); // 设置编码
            conn.setRequestProperty("connection", "keep-alive");
            conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary="
                    + BOUNDARY);

            if (file != null) {
                /**
                 * 当文件不为空,把文件包装并且上传
                 */
                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=\"file\"; filename=\""
                        + file.getName() + "\"" + LINE_END);
                sb.append("Content-Type: application/ctet-stream" + LINE_END);
                sb.append(LINE_END);
                dos.write(sb.toString().getBytes());
                InputStream is = new FileInputStream(file);
                byte[] bytes = new byte[1024 * 1024];
                int len = 0;
                while ((len = is.read(bytes)) != -1) {
                    dos.write(bytes, 0, len);
                }
                is.close();
                dos.write(LINE_END.getBytes());
                byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END)
                        .getBytes();
                dos.write(end_data);
                dos.flush();
                /**
                 * 获取响应码 200=成功 当响应成功,获取响应的流
                 */
                int res = conn.getResponseCode();
                System.out.println("response code:" + res);
                // if(res==200)
                // {
                System.out.println("request success");
                InputStream input = conn.getInputStream();
                StringBuffer sb1 = new StringBuffer();
                int ss;
                while ((ss = input.read()) != -1) {
                    sb1.append((char) ss);
                }
                result = sb1.toString();
                result = new String(result.getBytes("iso8859-1"), "utf-8");
                System.out.println("result : " + result);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return result;
    }

原文地址:https://www.cnblogs.com/xiluhua/p/10914197.html

时间: 2024-08-02 16:43:25

java 后台上传文件的相关文章

java 异步上传文件

我们的java上传文件,需要form同步上传,并且需要设置enctype为multipart/form-data. 如果将form使用ajax异步提交的话,将会报错说enctype不是multipart/form-data类型 但有时候确实又有酱紫的需求,可以实现,需要借助jquery.form.js 插件 插件下载地址为: http://yun.baidu.com/share/link?shareid=1698628055&uk=2836507213 下面贴出关键性代码 jsp代码为: <

Java ftp 上传文件和下载文件

今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接:http://blog.csdn.net/yucaifu1989/article/details/51483118 为了方便大家对比,我吧文章代码偷了过来: import java.io.File; import java.io.FileInputStream; import java.io.Fil

java struts2 上传文件范例

Struts2 default.properites属性文件相关说明 struts.i18n.encoding=UTF-8 国际化默认编码格式为UTF-8 struts.objectFactory = spring spring整合时需要使用 ### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data # struts.multipart.parser=cos # struts.

在Win7 环境使用Java API 上传文件到 Hadoop2.x HDFS 问题统计

问题一: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Administrator, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x 解决方案: 在本地系统(WIN7)的环境变量或java JVM变量里面添加HAD

java前后分离使用fetch上传文件失败500

这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本人不会java所以这里只是记录一下前端的注意事项. 原因 问题的主要原因在于,我在上传时设置了contenttype,这里就不得不提一下,fetch中由于之前使用的时候如果我不设置contenttype那么我向后端传送json时就会报错. 因为contenttype本来就是用于设置http的格式的,

项目--ajax上传文件(本次是图片)(.net)

1.下载一个ajaxfileupload.js 2.给上传按钮添加事件 <input type="button" id="btnUpload" value="上传" onclick="ajaxFileUpload()"/> 注:谷歌浏览器dataType中的JSON必须大写 <script type="text/javascript"> function ajaxFileUpload

ExtJS + fileuploadfield上传文件代码

后台服务端接收文件的代码: /** * 后台上传文件处理Action */ @RequestMapping(value = "/uploadFile", method=RequestMethod.POST) public void uploadFile(@RequestParam(value="file",required=true) MultipartFile file ,HttpServletResponse response) { ModelMap model

CI(2.2) 配置 jquery的上传插件Uploadify(v3.2) 上传文件

1.下载uploadify,   我的是v3.2 2.模板页面引入: <base href='{base_url()}' /> <script type="text/javascript" src="/public/admin/js/jquery.js"></script> <script type="text/javascript" src="/public/js/ajaxfileupload

httpclient 上传文件、下载文件

用httpclient4.3 post方式推送文件到服务端   准备:httpclient-4.3.3.jar:httpcore-4.3.2.jar:httpmime-4.3.3.jar 标签: <无> 代码片段(1)[全屏查看所有代码] 1. [代码][Java]代码 /**  * 上传文件  * @throws  ParseException  * @throws  IOException  */    publicstaticvoidpostFile()throwsParseExcept