http协议传输图片
来源:互联网 发布:惠州网络车问政平台 编辑:程序博客网 时间:2024/06/01 20:06
1. 通过org.apache.http.client.HttpClient
public String upload(String uri,String token,File f) throws UnsupportedEncodingException { String result = null; MultipartEntityBuilder meb = MultipartEntityBuilder.create(); ContentType contentType = ContentType.create("text/plain",Charset.forName("UTF-8"));meb.addTextBody("token",token,contentType); meb.addBinaryBody("file",f);try { HttpPost request = new HttpPost(uri); RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(timeout) .setConnectTimeout(timeout).setSocketTimeout(timeout).build(); request.setConfig(config); request.setEntity(meb.build()); HttpResponse response = client.execute(request); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); } } catch (Exception e) { } return result;}
2.通过java.net.URLConnection
public void httpUpload(String url){ String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"; //边界符,可自行定义 String prefix="--";//前缀 上传时需要多出两个-- 一定需要注意!!! String end="\r\n";//这里也需要注意,在html协议中,用 “/r/n” 换行,而不是 “/n”。 SimpleDateFormat adf=new SimpleDateFormat("HHmmss");//通过时间来创建文件名 String uploadname=adf.format(new Date())+".jsp";//上传的文件名称 try { URL http=new URL(url); HttpURLConnection conn= (HttpURLConnection) http.openConnection(); conn.setRequestMethod("POST"); conn.setReadTimeout(5000); conn.setDoInput(true);//准许向服务器读数据 conn.setDoOutput(true);//准许向服务器写入数据 /*设置向服务器上传数据的请求方式 默认的是表单形式 * 通过Content-Type协议向服务器上传数据 * boundary * */ conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+boundary); //创建一个输出流对象, DataOutputStream out=new DataOutputStream(conn.getOutputStream()); /* * -----------------------------7e020233150564 Content-Disposition: form-data; name="file"; filename="I:\迅雷下载\18fb1f51c9eb63489cce9e029154782e.jpg" Content-Type: image/jpeg //这里是空一行 需要注意 <二进制文件数据未显示> ---------------------------7e020233150564-- */ //向服务器写入数据 这里就需要完全根据以上协议格式来写,需要仔细,避免出错。 out.writeBytes(prefix+boundary+end);//这是第一行 并回车换行 //这是第二行,文件名和对应服务器的 out.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\""+uploadname+"\""+end);//这是第二行 out.writeBytes(end);//空一行 //以下写入图片 FileInputStream fileInputStream=new FileInputStream(new File("E://touxiang.jpg")); byte[]b=new byte[1024*4];//缓冲区 int len; //循环读数据 while((len=fileInputStream.read(b))!=-1){ out.write(b, 0, len); } //写完数据后 回车换行 out.writeBytes(end); out.writeBytes(prefix + boundary + prefix + end); out.flush();//清空 //创建一个输入流对象 获取返回的信息 是否上传成功 BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer sb=new StringBuffer(); String str; while((str=reader.readLine())!=null){ sb.append(str); } //关闭流信息 if(out!=null)out.close(); if(reader!=null)reader.close(); System.out.print("返回结果:"+sb.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}3.服务器接收文件public void getImage(@RequestParam("file") MultipartFile file) throws IOException, ServletException { //将当前系统时间作为文件的名称避免重名 //Date data=new Date(); String loc = "E://"; SimpleDateFormat adf = new SimpleDateFormat("HHmmss"); String filename = adf.format(new Date()); file.transferTo(new File("E://" + filename + ".jpg")); }
阅读全文
0 0
- http协议传输图片
- J2ME中通过Http协议传输图片
- J2ME中通过Http协议传输图片
- J2ME通过Http协议传输图片(转)
- 学习笔记:MFC实现http协议传输图片和文本
- HTTP超文本传输协议
- 超文本传输协议-HTTP
- 超文本传输协议-HTTP
- 超文本传输协议-HTTP
- 超文本传输协议HTTP
- HTTP超文本传输协议
- 超文本传输协议HTTP
- 超文本传输协议-HTTP
- HTTP超文本传输协议
- HTTP传输协议实现
- 超文本传输协议-----HTTP
- HTTP协议网络传输
- HTTP/超文本传输协议
- FTP的搭建与虚拟目录作用<之简单讲解>
- Java中的_多态_接口_代理
- Spring多数据源配置系列(一)——多数据源配置
- JD2943——线段树、树套树、分块(线段树裸题)
- Linux(一)基本知识点
- http协议传输图片
- C#获取ip地址、dns、mac地址、cpu信息
- Consul 删除无效的服务或多实例下的无效节点
- 联币网与7宝网达成战略合作,未来是数字资产时代
- bankForJS_createClass
- 补码理解
- 83. Remove Duplicates from Sorted List
- 2017/8/30工作总结
- 未解决问题