Java模拟表单POST上传文件
JAVA模拟表单POST上传文件
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.concurrent.Callable;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import org.apache.commons.lang.StringUtils;
import com.grand.mysql_handler.mapper.SystemMapper;
import net.sf.json.JSONObject;
private String uploadImage(String name,byte[] buf) throws Exception { String filename = name.substring(name.lastIndexOf("/") + 1); final String newLine = "\r\n";
final String boundaryPrefix = "--";
final String boundary = "----theorydance"; String api_url = "http://localhost:8080/filestorage/app/api/fileUpload";
HttpURLConnection conn = (HttpURLConnection) new URL(api_url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setReadTimeout(20000);
conn.setConnectTimeout(5000);
conn.setRequestMethod("POST");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); StringBuilder sb = new StringBuilder(); // key参数
sb.append(boundaryPrefix + boundary + newLine);
sb.append("Content-Disposition: form-data; name=\"name\"" + newLine);
sb.append(newLine);
sb.append((name==null?"default":name) + newLine); // 图片数据
sb.append(boundaryPrefix + boundary + newLine);
sb.append("Content-Disposition: form-data; name=\"myfile\"; filename=\""+filename+"\"" + newLine);
sb.append("Content-Type: application/octet-stream" + newLine);
sb.append(newLine); OutputStream out = new DataOutputStream(conn.getOutputStream());
out.write(sb.toString().getBytes());
out.write(buf);
out.write(newLine.getBytes()); String endFlag = boundaryPrefix + boundary + boundaryPrefix + newLine;
out.write(endFlag.getBytes());
out.flush();
out.close(); System.out.println("响应状态码:"+conn.getResponseCode());
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String content = "";
while((line=br.readLine())!=null) {
content += line;
}
JSONObject json = JSONObject.fromObject(content);
System.out.println(json.toString());
return json.getJSONObject("data").getString("url");
}
Java模拟表单POST上传文件的更多相关文章
- CURL模拟表单post提交及相关常用参数的使用(包括提交表单同时上传文件)
转载自:https://blog.csdn.net/freedomwjx/article/details/43278157 (注:在curl前面加上time如time curl xxx,可以在最后显示 ...
- JAVA模拟HTTP post请求上传文件
在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...
- Servlet 表单及上传文件
// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestServletForm.java package com.test; impo ...
- web 表单方式上传文件方法(不用flash插件)
原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...
- ajax异步上传文件和表单同步上传文件 的区别
1. 用表单上传文件(以照片为例)-同步上传 html部分代码:这里请求地址index.php <!DOCTYPE html> <html lang="en"&g ...
- php 利用fsockopen GET/POST 提交表单及上传文件
1.GET get.php <?php $host = 'demo.fdipzone.com'; $port = 80; $errno = ''; $errstr = ''; $timeout ...
- Java模拟客户端向服务器上传文件
先来了解一下客户端与服务器Tcp通信的基本步骤: 服务器端先启动,然后启动客户端向服务器端发送数据. 服务器端收到客户端发送的数据,服务器端会响应应客户端,向客户端发送响应结果. 客户端读取服务器发送 ...
- php 利用 fsockopen GET/POST 提交表单及上传文件
1.GET get.php <?php$host = 'demo.fdipzone.com';$port = 80;$errno = '';$errstr = '';$timeout = 30; ...
- JAVA入门[16]-form表单,上传文件
一.如何传递参数 使用 @RequestParam 可以传递查询参数.例如:http://localhost:8092/category/detail?id=1 @RequestMapping(&qu ...
随机推荐
- UNP——第二章,TCP握手与挥手分析
1.握手 说明: 下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发, 涉及 accept, listen 之类api,都是 应用进程 完成. 都统一使用 客户端,服务端描述,请自行分辨 ...
- VGA详解及色块碰撞示例
引言 VGA:video Graphics array,视频图形阵列,阴极射线显像管(CRT)显示器时代产物,很多老显卡.笔记本电脑.投影仪所用接口,已经比较过时. CRT是模拟设备,所以VGA也采用 ...
- 【转】CentOS7 64位安装mysql教程
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示 1.先检查系统是否装有mysql rpm -qa | grep mysql 这里返回空值,说 ...
- Python_Python处理JSON文件
# Python处理Json对象 # Python处理Json对象 ''' json.loads() 将JSON字符串转为Python对象 json.dumps() 将Python对象转为JSON字符 ...
- Python_错误调试2018.3.17【待完善】
异常处理 几个提示信息: notice 注意 warning 警告 error 错误 debug 调试 错误处理 1.Try语句 try execpt 2.print() 3.assert断言,当满足 ...
- mysql之多表查询的其他查询
1,临时表查询 (1)需求:查询高于本部门平均工资的人员 select * from person as p, (select dept_id, avg(salary) as '平均工资' from ...
- ThreadPoolExecutor源码分析-面试问烂了的Java线程池执行流程,如果要问你具体的执行细节,你还会吗?
Java版本:8u261. 对于Java中的线程池,面试问的最多的就是线程池中各个参数的含义,又或者是线程池执行的流程,彷佛这已成为了固定的模式与套路.但是假如我是面试官,现在我想问一些更细致的问题, ...
- 类虚拟机软件CrossOver是什么?它的优势在哪里?
虚拟机软件对于很多人来说已经不是一个陌生的词汇了.我们可以通过软件来模拟具有完整硬件系统功能的计算机系统.比如我们可以在Mac OS系统上模拟Windows 7 的系统,以此来安装我们想要使用的应用程 ...
- 自定义JSTL Tag
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java ...
- C#中的WinForm问题——使用滚动条时页面闪烁及重影问题
当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁.重影等问题,如下图所示: 在网上搜索过该问题,大部分都说使用双缓冲可以解决此类问题,即通过设置DoubleBuf ...