新手求助,asp.net接收android图片,http协议如何实现?

问题描述

求助各位大神,有一个写好的android客户端,可以上传图片,通过创建httpclient,经过base64编码,然后通过POST上传,我这边想写一个能在IIS服务器上发布的.net程序,接收那边发过来的图片,我这边要如何实现,如果能给出示例程序就更好了。下面是android部分代码HOST="http://123.456.76.71:3398:8086/ImageServer/upServer"publicvoidupload(){//bitmap转化为byte数组的方法,把压缩后的数据存放到Stream中ByteArrayOutputStreamstream=newByteArrayOutputStream();upbitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);byte[]b=stream.toByteArray();//将图片流以字符串形式存储下来Stringfile=newString(Base64Coder.encodeLines(b));HttpClientclient=newDefaultHttpClient();//设置上传参数List<NameValuePair>formparams=newArrayList<NameValuePair>();formparams.add(newBasicNameValuePair("file",file));HttpPostpost=newHttpPost(HOST);UrlEncodedFormEntityentity;try{entity=newUrlEncodedFormEntity(formparams,"UTF-8");post.addHeader("Accept","text/javascript,text/html,application/xml,text/xml");post.addHeader("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3");post.addHeader("Accept-Encoding","gzip,deflate,sdch");post.addHeader("Connection","Keep-Alive");post.addHeader("Cache-Control","no-cache");post.addHeader("Content-Type","application/x-www-form-urlencoded");post.setEntity(entity);HttpResponseresponse=client.execute(post);System.out.println(response.getStatusLine().getStatusCode());HttpEntitye=response.getEntity();System.out.println(EntityUtils.toString(e));if(200==response.getStatusLine().getStatusCode()){System.out.println("上传完成");Looper.prepare();Toast.makeText(MainActivity.this,"图片上传成功!",Toast.LENGTH_LONG).show();myDialog.dismiss();Looper.loop();}else{//System.out.println("上传失败");Looper.prepare();Toast.makeText(MainActivity.this,"图片上传失败!,请重新上传",Toast.LENGTH_SHORT).show();Looper.loop();}client.getConnectionManager().shutdown();}catch(Exceptione){e.printStackTrace();}}

解决方案

解决方案二:
如果你要以流的方式来上传图片,那就必须multipart/form-data方式接收,当然还有种方式,将图片转化为base64格式,这样就可以按application/x-www-form-urlencoded的方式来接收,给你一个webapi按multipart/form-data方式接受的文章
解决方案三:
好吧,我没细看,服务端你只要Request.Form["file"]来取到字符串,再将base64转为byte[],然后通过Memory来读取,最后通过Image.FromStream来转化为图片就可以了,当然其实后面几步转化为图片的可以忽略,你可以直接对取到的byte进行是否是图片的判断,这里有几种常见的类型判断,判断通过后,直接用StreamWriter将图片按文件流的方式直接写入文件
解决方案四:
引用2楼starfd的回复:

好吧,我没细看,服务端你只要Request.Form["file"]来取到字符串,再将base64转为byte[],然后通过Memory来读取,最后通过Image.FromStream来转化为图片就可以了,当然其实后面几步转化为图片的可以忽略,你可以直接对取到的byte进行是否是图片的判断,这里有几种常见的类型判断,判断通过后,直接用StreamWriter将图片按文件流的方式直接写入文件

你好,我是个初学者,问点基础的,我是应该见一个aspx文件还是asmx文件,然后新建一个类吗,在里面使用Request.Form["file"],只是这条语句就可以实现接收吗,需要写监听程序吗?
解决方案五:
一句话概括:把APP端当成浏览器
解决方案六:
引用4楼tongxuejie的回复:

一句话概括:把APP端当成浏览器

你好,你有以前写过的程序吗?可以给我借鉴一下的。
解决方案七:
你这是aspx或者ashx都可以,用mvc,webapi也可以
解决方案八:
引用6楼starfd的回复:

你这是aspx或者ashx都可以,用mvc,webapi也可以

因为是http通信,http有一些头文件,如何把头文件去掉,然后把剩下的字符串用base64解码?
解决方案九:
引用6楼starfd的回复:

你这是aspx或者ashx都可以,用mvc,webapi也可以

最近老师催的比较紧,我基础又很差,你能不能帮我把代码写出来,我可以支付宝给你转20,如果没时间写的话,就当我没说。
解决方案十:
引用8楼jiutangwol744078的回复:

Quote: 引用6楼starfd的回复:
你这是aspx或者ashx都可以,用mvc,webapi也可以

最近老师催的比较紧,我基础又很差,你能不能帮我把代码写出来,我可以支付宝给你转20,如果没时间写的话,就当我没说。

要耐心理解和学习原理。你们培训班老师收多少钱?他能负责任教“会”你吗?
解决方案十一:
引用9楼sp1234的回复:

Quote: 引用8楼jiutangwol744078的回复:
Quote: 引用6楼starfd的回复:
你这是aspx或者ashx都可以,用mvc,webapi也可以

最近老师催的比较紧,我基础又很差,你能不能帮我把代码写出来,我可以支付宝给你转20,如果没时间写的话,就当我没说。

要耐心理解和学习原理。你们培训班老师收多少钱?他能负责任教“会”你吗?

现在是读研,给老师做相关项目,用到了http通信,上传图片,老师催得紧,来不及从头看教程,因为明天就要汇报了,所以出此下策。
解决方案十二:
引用4楼tongxuejie的回复:

一句话概括:把APP端当成浏览器

浏览器上传,Request.Form.Get("UserName")To.String(),APP上传时对应UserName处应该填写什么?
解决方案十三:
头文件跟传送主体有什么关系?一个是header,一个是body,说了aspx的话Request.Form["file"]就可以取到了,然后base64怎么转成图片这个论坛里也是定时出现问的,百度下也是随便都有的
解决方案十四:
引用12楼starfd的回复:

头文件跟传送主体有什么关系?一个是header,一个是body,说了aspx的话Request.Form["file"]就可以取到了,然后base64怎么转成图片这个论坛里也是定时出现问的,百度下也是随便都有的

我的接收已经实现,这是部分代码protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack)//是否是第一次加载,如果不是了响应客户端回发而加载该页的时候执行{}里的数据---即第一次加载{stringbytestr=Request.Form["file"];//接收app传递的字符串if(bytestr!=null){Response.Write("true");byte[]arr=Convert.FromBase64String(bytestr);//base64解码然后存入数组stringname="";name=DateTime.Now.Year.ToString()+DateTime.Now.Month+DateTime.Now.Day+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second;stringpath=Server.MapPath("Image\"+name+".jpg");MemoryStreamms=newMemoryStream(arr,0,arr.Length);//存入内存流Bitmapbmp=newBitmap(ms);bmp.Save(path,System.Drawing.Imaging.ImageFormat.Jpeg);ms.Close();}我用这条代码接收成功后,图片小了很多,手机发送的是3M左右,可是接收只有110KB左右,您知道是什么原因吗?
解决方案十五:
因为你存的是JPEG格式,会压缩的,所以110K挺正常的你打开图片看一下内容对就行。
解决方案:
图片是压缩过,但又有一个问题,求助各位大神,3g网能上传,但连wifi不能上传是什么原因,wifi和服务器都在校园网内,用我电脑做服务器,其他的网页3g和wifi都可以上,只有这个接收程序wifi不能接收,不知道是app还是我这边服务器的原因,求各位大神指导。

时间: 2024-10-29 21:40:51

新手求助,asp.net接收android图片,http协议如何实现?的相关文章

发帖功能-【新手求助!!】android 中如何实现类似“说说”“帖子”的加载

问题描述 [新手求助!!]android 中如何实现类似"说说""帖子"的加载 最近想做一个发帖的功能,但是不知道 怎么把写好的"帖子" 加载在另一个布局里.求帮助,,有实例最好 或者可以详细讲讲思路 拜谢! 解决方案 你是说想QQ空间发说说那样吗? 是的话 很简单 点击发说说调到说说界面 利用 startActivityForResult(intent, Constants.VOTE); 发了说说成功之后结束说说界面 setResult(Con

asp.net 接收android上图片代码 出错:此流上不支持超时

问题描述 android上传图片publicstaticvoidupLoadImg(AjaxParamsparams,finalActivityaty){FinalHttpfh=newFinalHttp();UIHelper.toast("测试上传开始");finalProgressDialogdialog=UIHelper.getprogress(aty,"正在上传头像...");fh.post("http://192.168.1.107/"+

窗口-新手求助:C#中 如何将form1中picture box1的图片放大 透明 无边框的显示到form2中...

问题描述 新手求助:C#中 如何将form1中picture box1的图片放大 透明 无边框的显示到form2中... 如题,,新手,还请尽可能详细点,,用C#处理图形 和多窗口 还是第一次..

controller-MVC新手求助,如何实现点击图片视图跳转

问题描述 MVC新手求助,如何实现点击图片视图跳转 我的两个视图A,B都在同一个controller里面,我想在A中点击一张图片跳转到B中, 我之前用的是ActionLink,在图片后面增加一个字段,然后点击字段实现页面跳转. 但是ActionLink不能直接设置到图片上. 我想请教一下这样的问题应该怎么解决呢? 解决方案 直接用html <a href="链接地址"><img src="图片地址i" width="图片宽" h

android 图片上传 服务器接收图片方法代码

问题描述 android 图片上传 服务器接收图片方法代码 求android 批量图片上传 服务器接收,代码,最好有详细解释,万分感谢jackcathy369@163.com 解决方案 http://programmerguru.com/android-tutorial/how-to-upload-image-to-java-server/......答案就在这里:Android 上传图片,服务器接收图片实现 解决方案二: http://blog.csdn.net/y150481863/arti

手机定位-新手求助,android百度定位textview没有显示地址

问题描述 新手求助,android百度定位textview没有显示地址 public class StartCanteenActivity extends Activity { private TextView locationInfoTextView = null; private Button startButton = null; private LocationClient locationClient = null; private static final int UPDATE_TI

程序无法运行-android大神来,新手求助

问题描述 android大神来,新手求助 做新手练习题,在添加新activity后使用intent与原activity交互,但不知道为什么程序无法运行了,console也没有错误信息,可能是哪里错了呢?是不是manifest.xml有问题呀? logcat显示错误信息如下,是否有帮助 [2013-10-15 18:52:31 - Unexpected error while launching logcat. Try reselecting the device.] device not fou

android应用-【新手求助】AIDE怎么添加透明背景。

问题描述 [新手求助]AIDE怎么添加透明背景. 我是新手,刚学Java.用AIDE做了几个小软件. 现在想把背景弄成透明的,就是可以在任何Activity直接看到桌面. 开始用手机PS做了张全透明图片(新建一张图片,直接设置不透明度0%).添加到background.发现没有用.添加到控件的背景就可以. 所以我想这应该是代码实现的.请各路大神为我解惑.谢谢! 解决方案 去掉 iframe 边框以及滚动条以及背景透明 解决方案二: 编码.....有吗?

android问题,我用百度 map 定位不到自己的位置?新手求助

问题描述 android问题,我用百度 map 定位不到自己的位置?新手求助 public class MainActivity extends Activity { private LocationClient mLocationClient = null; private Button mStartBtn = null; private TextView mTextView = null; @Overrideprotected void onCreate(Bundle savedInstan