转自:http://blog.csdn.net/5iasp/article/details/8669644#comments
public static void main(String[] args) {
String filepath="d:\\test\\1.jpg";
String urlStr = "http://localhost:8080/minicms/picup.jsp";
Map<String, String> txtMap = new HashMap<String, String>();
txtMap.put("name", "testname");
Map<String, String> fMap = new HashMap<String, String>();
fMap.put("userfile", filepath);
String ret = formUpload(urlStr, txtMap, fMap);
System.out.println(ret);
}
public static String formUploadTest(String urlStr, Map<String, String> textMap,Map<String, String> fileMap) {
String res = null;
HttpURLConnection conn = null;
String 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());
// 一、
if (textMap != null && textMap.size>0) {
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());
}
// 图片
if (fileMap != null && textMap.size>0) {
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!=null && 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;
}
}
相关推荐
总结,通过PHP的cURL和ThinkPHP5,我们可以轻松地模拟form表单提交,包括图片和文件。理解cURL的工作原理以及如何在TP5中使用它,对于进行复杂的HTTP交互是非常有用的。请确保在实际应用中遵守相关的安全规范,如...
在Java Web开发中,表单上传是常见的功能之一,尤其是当用户需要上传多个文件时。本文将详细讲解如何实现这个功能,主要涉及HTML表单、Servlet、MVC框架(如Spring MVC)以及文件处理的相关知识。 1. HTML表单设置...
php模拟表单上传图片 POST ,做一个b.php,接收数据
在Node.js中实现模拟form表单上传文件,主要涉及到HTTP协议中的multipart/form-data数据格式。这种格式用于提交表单,尤其是文件上传时。文件上传时,浏览器会将每个文件作为form-data的一部分,每一个部分都通过一...
通用的http请求工具,可以模拟表单提交、上传文件、发送请求、获取网页内容
通过以上步骤,我们成功地在一个form表单中实现了同时上传多个文件和文本信息的功能。这种实现方式不仅提高了用户的使用体验,也方便了开发者对上传数据的管理和处理。在实际应用中,还可以进一步扩展该功能,例如...
本篇文章将深入探讨如何在VC++中模拟POST方式上传表单,这是一个在网络编程中常见的任务,通常用于向Web服务器发送数据。 首先,POST方法是HTTP协议中的一个请求方法,用于向服务器提交数据,比如填写表单后提交...
在本文中,我们将深入探讨如何通过模拟POST表单上传文件到服务器,这是一项常见的任务,尤其在开发Web应用程序时。我们将涵盖客户端如何构建请求以及服务器如何接收和处理这些请求。 首先,让我们理解POST请求的...
CSharp客户端通过Http模拟表单提交到Java的web服务端.rar C#的wpf客户端使用HttpWebRequest模拟网页表单提交数据到Java的web服务端,...*该程序可以同时提交表单数据和上传文件* **********************************
控件,form 表单需要设置 enctype=”multipart/form-data” 属性。比如: <body> <form action=UploadFile.php method=post enctype=multipart/form-data> <input type=file name=fileUpload /&...
本文介绍了Node Js 使用...form表单上传文件流程(PHP和node js) 文件上传操作原理 form表单【注意:enctype=”multipart/form-data”】上传文件时,首先会将文件上传到你本机的temp目录,然后执行move_upload_file
本文将详细介绍如何在Android中实现表单上传文件,尤其是图片文件。 首先,理解表单上传的基本原理。在Web开发中,HTML的`<form>`标签可以设置`enctype="multipart/form-data"`来支持文件上传。但在Android中,由于...
在本教程中,我们将探讨如何利用libcurl库在C/C++程序中实现POST方法来提交表单数据并上传图片。这个过程涉及到几个关键步骤,包括初始化libcurl会话、设置请求选项、构建POST数据以及处理响应。 首先,你需要包含...
在这个场景中,我们将深入探讨如何利用libcurl在C++中上传文件并发送POST表单数据。 首先,`con_test.cpp`是主要的源代码文件,它包含了使用libcurl进行文件上传和POST操作的具体实现。`StdAfx.cpp`和`StdAfx.h`是...
在IT行业中,模拟登录和提交表单是网络自动化和数据抓取的重要技术,常用于测试、数据分析或自动化脚本编写。这里的"post模拟登录,提交表单"涉及到HTTP请求方式中的POST方法,以及如何处理登录过程和后续的表单提交...
在本文中,我们将深入探讨如何在VC++ MFC环境下构建一个HTTP协议数据的POST上传图片类,同时模拟表单提交。这个过程涉及到的关键技术包括HTTP POST请求、编码转换以及MFC类库的使用。 首先,我们需要理解HTTP POST...
Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传
在C#编程中,模拟POST提交通常用于模拟用户在网页上的表单提交行为,...以上就是使用C#模拟POST提交上传图片到服务器的基本流程和关键知识点。实际应用中,可能需要根据具体的业务需求和服务器端的API进行相应的调整。