java http post 同时发送文件流与数据 10
javahttppost如何同时发送文件流与数据??又如何接收呢?只发送文件接收是用request.getInputStream();获取文件流如果文件和数据同时发送是否...
java http post 如何同时发送文件流与数据??
又如何接收呢?
只发送文件接收是用request.getInputStream();获取文件流
如果文件和数据同时发送是否可行?又如何接收?
数据为json串.
求个例子,发送与接收,谢谢。 展开
又如何接收呢?
只发送文件接收是用request.getInputStream();获取文件流
如果文件和数据同时发送是否可行?又如何接收?
数据为json串.
求个例子,发送与接收,谢谢。 展开
2个回答
2015-01-28 · 知道合伙人数码行家
关注
展开全部
您好,提问者:
首先表单、文件同时发送那么肯定是可以的,关于获取的话很难了,因为发送文件的话form必须设置为:multipart/form-data数据格式,默认为:application/x-www-form-urlencoded表单格式。我们称之为二进制流和普通数据流。
刚才说了<form的entype要改为multipart/form-data才能进行发送文件,那么这个时候你表单的另外数据就也会被当成二进制一起发送到服务端。
获取读取过来的内容如下:
//拿到用户传送过来的字节流
InputStream is = request.getInputStream();
byte[] b = new byte[1024];
int len = 0;
while((len = is.read(b)) != -1){
System.out.println(new String(b,0,len));
}
上面如图的代码,我们发现发送过来的表单数据跟文件数据是混乱的,我们根本没办法解析(很麻烦),这个时候我们就需要用到第三方辅助(apache 提供的fileupload.jar)来进行获取。
这个网上有很多代码的,如果有什么不明白可以去自行百度,或者追问,我这里只是给你提供的思路,希望理解,谢谢!
展开全部
数据的话,直接“&参数名 =参数值”的形式即可,主要是文件流需要进行相应的定义,举例:以文件流的方式发送 和接收。
postData += ("&hashcode=" + GetMD5String(pwd));
byte[] data = System.Text.Encoding.UTF8.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("url");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";//定义文件流形式,这个就是流的类型。
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// 发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
// 接收
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
postData += ("&hashcode=" + GetMD5String(pwd));
byte[] data = System.Text.Encoding.UTF8.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("url");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";//定义文件流形式,这个就是流的类型。
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// 发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
// 接收
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询