java http post 同时发送文件流与数据

java http post 如何同时发送文件流与数据??
又如何接收呢?
只发送文件接收是用request.getInputStream();获取文件流
如果文件和数据同时发送是否可行?又如何接收?
数据为json串.

求个例子,发送与接收,谢谢。

您好,提问者:
    é¦–先表单、文件同时发送那么肯定是可以的,关于获取的话很难了,因为发送文件的话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)来进行获取。

    è¿™ä¸ªç½‘上有很多代码的,如果有什么不明白可以去自行百度,或者追问,我这里只是给你提供的思路,希望理解,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-16
数据的话,直接“&参数名 =参数值”的形式即可,主要是文件流需要进行相应的定义,举例:以文件流的方式发送 和接收。
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();

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网