您好,匿名用户
随意问技术百科期待您的加入

JAVA POST 上传文件

0 投票
    public String upload(String url, ArrayList<File> files) {
        String BOUNDARY = "------WebKitFormBoundary"; //数据分隔线 
        String endline = "--" + BOUNDARY + "--\r\n";//数据结束标志 
        StringBuilder sb = new StringBuilder();
        HttpURLConnection http = null;
        BufferedReader in = null;
        DataOutputStream out = null;
        try {
            URL u = new URL(url);
            http = (HttpURLConnection) u.openConnection();
            http.setRequestMethod("POST");
            http.setDoOutput(true);
            http.setRequestProperty("Charset", charset);
            http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11");
            http.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
            http.setConnectTimeout(ConnectTimeout);
            http.setReadTimeout(ReadTimeout);
            http.connect();

            out = new DataOutputStream(http.getOutputStream());

            for (File file : files) {
                String fileBody = endline + "Content-Disposition: form-data;name=\"Filedata\";filename=\"" + file.getName() + "\"\r\n";
                fileBody += "Content-Type: image/jpeg\r\n\r\n";
                System.out.println(fileBody);
                out.write(fileBody.getBytes());
                FileInputStream fis = new FileInputStream(file);
                byte[] buffer = new byte[1024];
                int len;
                while ((len = fis.read(buffer, 0, 1024)) != -1) {
                    out.write(buffer, 0, len);
                }
                out.write("\r\n".getBytes());
            }

            String postBody = endline + "Content-Disposition: form-data;name=\"test\"\r\n\r\n11\r\n";
            System.out.println(postBody);
            out.write(postBody.getBytes());
            
            out.write(endline.getBytes());
            out.flush();
            out.close();

            in = new BufferedReader(new InputStreamReader(http.getInputStream(), charset));
            String tmp;
            while ((tmp = in.readLine()) != null) {
                sb.append(tmp).append("\n");
            }

            in.close();
        } catch (Exception ex) {
            Logger.getLogger(Http.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            close(http, in, out);
            return sb.toString();
        }
    }

PHP 页面
print_r($_FILES);
print_r($_POST);

upload 返回的结果是空 array

不要让我去用httpclient

大神们,我这代码问题出在哪

用户头像 提问 2014年 4月3日 @ Vi 上等兵 (121 威望)
分享到:

你的回答

隐私保护: 您的邮箱仅用于发送系统通知。
请输入验证码:
    图片验证码看不清?
登录注册后不会被要求输入验证码。

提一个问题:

相关问题

0 投票
1 回复 55 阅读
用户头像 提问 2013年 9月20日 @ Cassiopeia 上等兵 (317 威望)
+1 投票
1 回复 59 阅读
0 投票
1 回复 37 阅读
用户头像 提问 2013年 9月11日 @ Kassadin 上等兵 (255 威望)
0 投票
1 回复 37 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...