转自:http://blog.csdn.net/5iasp/article/details/8669644

模拟表单html如下:

java代码如下:

[java] view plain copy

package com.yanek.util;

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import javax.activation.MimetypesFileTypeMap;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class HttpPostUploadUtil {

/**

* @param args

*/

public static void main(String[] args) {

String filepath="E:\\ziliao\\0.jpg";

String urlStr = "http://127.0.0.1:8080/minicms/up/up_result.jsp";

Map textMap = new HashMap();

textMap.put("name", "testname");

Map fileMap = new HashMap();

fileMap.put("file", filepath);

String ret = formUpload(urlStr, textMap, fileMap);

System.out.println(ret);

}

/**

* 上传图片

*

* @param urlStr

* @param textMap

* @param fileMap

* @return

*/

public static String formUpload(String urlStr, Map textMap,

Map fileMap) {

String res = "";

HttpURLConnection conn = null;

String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符

try {

URL url = new URL(urlStr);

conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

conn.setReadTimeout(30000);

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setUseCaches(false);

conn.setRequestMethod("POST");

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

conn

.setRequestProperty("User-Agent",

"Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");

conn.setRequestProperty("Content-Type",

"multipart/form-data; boundary=" + BOUNDARY);

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

// text

if (textMap != null) {

StringBuffer strBuf = new StringBuffer();

Iterator iter = textMap.entrySet().iterator();

while (iter.hasNext()) {

Map.Entry entry = (Map.Entry) iter.next();

String inputName = (String) entry.getKey();

String inputValue = (String) entry.getValue();

if (inputValue == null) {

continue;

}

strBuf.append("\r\n").append("--").append(BOUNDARY).append(

"\r\n");

strBuf.append("Content-Disposition: form-data; name=\""

+ inputName + "\"\r\n\r\n");

strBuf.append(inputValue);

}

out.write(strBuf.toString().getBytes());

}

// file

if (fileMap != null) {

Iterator iter = fileMap.entrySet().iterator();

while (iter.hasNext()) {

Map.Entry entry = (Map.Entry) iter.next();

String inputName = (String) entry.getKey();

String inputValue = (String) entry.getValue();

if (inputValue == null) {

continue;

}

File file = new File(inputValue);

String filename = file.getName();

String contentType = new MimetypesFileTypeMap()

.getContentType(file);

if (filename.endsWith(".png")) {

contentType = "image/png";

}

if (contentType == null || contentType.equals("")) {

contentType = "application/octet-stream";

}

StringBuffer strBuf = new StringBuffer();

strBuf.append("\r\n").append("--").append(BOUNDARY).append(

"\r\n");

strBuf.append("Content-Disposition: form-data; name=\""

+ inputName + "\"; filename=\"" + filename

+ "\"\r\n");

strBuf.append("Content-Type:" + contentType + "\r\n\r\n");

out.write(strBuf.toString().getBytes());

DataInputStream in = new DataInputStream(

new FileInputStream(file));

int bytes = 0;

byte[] bufferOut = new byte[1024];

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

out.write(bufferOut, 0, bytes);

}

in.close();

}

}

byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();

out.write(endData);

out.flush();

out.close();

// 读取返回数据

StringBuffer strBuf = new StringBuffer();

BufferedReader reader = new BufferedReader(new InputStreamReader(

conn.getInputStream()));

String line = null;

while ((line = reader.readLine()) != null) {

strBuf.append(line).append("\n");

}

res = strBuf.toString();

reader.close();

reader = null;

} catch (Exception e) {

System.out.println("发送POST请求出错。" + urlStr);

e.printStackTrace();

} finally {

if (conn != null) {

conn.disconnect();

conn = null;

}

}

return res;

}

}

上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)相关推荐

  1. android 自定义图片上传,android自定义ImageView仿图片上传(示例代码)

    Activity代码 1 public classMainActivity extends AppCompatActivity {2     ProcessImageView processImage ...

  2. java实现上传图片代码_Java图片上传实现代码

    本文实例为大家分享了java图片上传代码,供大家参考,具体内容如下 import java.io.*; import java.net.*; /* *发送端 */ class picsend { pu ...

  3. JavaWeb实现裁剪图片上传完整代码

    JavaWeb实现裁剪图片上传完整代码 这篇文章主要为大家详细介绍了javaWeb实现裁剪图片上传完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了JavaWeb实现裁剪 ...

  4. Java分布式二手房项目尚好房第五课 图片上传及前端房源展示

    尚好房:图片上传 一.图片存储方案 1.介绍 在实际开发中,我们会有很多处理不同功能的服务器.例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的 ...

  5. php网页添加图片的代码,天天查询-PHP版的kindeditor编辑器加图片上传水印功能

    首先简单介绍一下kindeditor编辑器: KindEditor 是一套开源的在线HTML编辑器,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...

  6. php多图片上传程序,php多文件上传 多图片上传程序代码

    多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传 ...

  7. php实时上传多张图片,php实现多图片上传程序代码

    php实现多图片上传方法非常的简单只要遍历数组然后使用上传函数就可以搞定了,可以说几句代码就可以实现,但对于新手来讲还是有点,下面一起来看看. 在做图片上传时用到了symfony第三方上传库,详见 S ...

  8. php多图片上传程序2.4.3,php多文件上传 多图片上传程序代码

    多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传 ...

  9. layui多文件上传讲解_layui d多文件上传(示例代码)

    借阅 前端代码 选择多文件 图片大小状态操作 不计在线 删除 开始上传 JS 代码 layui.use('upload', function(){ var upload = layui.upload; ...

最新文章

  1. Find Large Files in Linux
  2. 学习java一定会用到的应用软件
  3. 互联网安全威胁及应对方案
  4. OpenCASCADE:Modeling Algorithms模块几何工具之Intersections交叉
  5. MySQL(七)联结表
  6. 如何给 Chrome 开发者工具设置 Material Design 风格的主题外观
  7. (下)python3 selenium3 从框架实现代码学习selenium让你事半功倍
  8. Java每次输入一个字符+高精度取整计算(记洛谷P2394题WA+TLE+RE的经历,Java语言描述)
  9. 数据库中字段随机添加汉字
  10. vs2008安装_Visual Studio2008安装教程
  11. JMeter(五)--检查点
  12. 对AUTOCAD软件的一些配置
  13. 文件比较 增量 更新 系统发布 增量更新
  14. 东芝打印机共享怎么设置_东芝 e-studio181怎么设置网络打印机
  15. win10查看所有的wifi密码。
  16. X264 AQ MODE详解
  17. 【搜索引擎】提高 Solr 性能
  18. 乐师2017年新生程序设计大赛解题报告
  19. 微信小程序使用iconfont阿里矢量多色图标
  20. 腾讯云学生服务器(官网校园计划)

热门文章

  1. linux mint 主题切换,详解如何在 Linux Mint 中更换主题
  2. Android Webview实现文件下载功能
  3. 【BZOJ4514】数字配对,费用流
  4. 【NOIP2011TG】【OJ4366】【codevs1135】选择客栈
  5. 2017.2.19 loli测试
  6. a.使用new关键字产生对象会调用构造方法_JAVA创建对象的几种方式
  7. render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...
  8. 【英语学习】【WOTD】yen 释义/词源/示例
  9. 【英语学习】【Daily English】U03 Leisure Time L02 I'm more of an indoorsy person anyway
  10. H2O Wave教程---基于浏览器的实时显示工具---教程01