本文转载至 http://blog.sina.com.cn/s/blog_4c70701801012inq.html

 
    如上采用asihttprequest类中的post方式上传就行。大致思路是:上传编码过的字符串类型,然后在服务器端把字符串转换成二进制流文件,接着二进制流转换成图片。
    关键点是myUpload.upload类型是nsdata,而nslog打印一下发现编码过的字符串两端还包含“<”和“>”,所以服务器端接受到的数据需要把他们删掉,然后将其转换为二进制,进而转换为图片。而二进制转换成图片的类型随意,测试结果png和jpg都可以。
    request中的forkey是自己设的关键字。要点就这么多了。
 关于服务器端的说明见下,感谢YM帮忙测试和写服务器端文档,留以后用。

上传图片说明

1.      关键字说明

String pictureFileName;        //上传图片名

String pictureContentType;     //上传图片类型

String pictureContent;         //上传图片的字符串形式

2.      上传流程

3.      代码

3.1 图片内容从字符串形式转换成二进制形式

public static byte[] hex2byte(String str) { // 字符串转二进制

if (str == null)

return null;

str = str.trim();

str = str.replace(" ", "");

int len = str.length();

if (len == 0 || len % 2 == 1)

return null;

byte[] b = new byte[len / 2];

try {

for (int i = 0; i < str.length(); i += 2) {

b[i / 2] = (byte) Integer

.decode("0x" + str.substring(i, i + 2)).intValue();

}

return b;

catch (Exception e) {

return null;

}

}

3.2 将二进制流写入文件中

public static File fileBuild(String pictureContent){

File file = new File(F_NAME);  //存放二进制内容的指定文件

//去除前后两个尖括号

pictureContent = pictureContent.substring(1, pictureContent.length()-1);

try{

if(!file.exists()){

file.createNewFile();

}

// 将字符串转换成二进制,用于显示图片

int nRead = 0;

byte[] imgByte = StrToByte.hex2byte(pictureContent);

byte[] b = new byte[1024];

InputStream in = new ByteArrayInputStream( imgByte );

FileOutputStream output = new FileOutputStream(F_NAME,false);

while( ( nRead = in.read(b) ) != -1 ){

output.write( b, 0, nRead );

}

output.flush();

output.close();

in.close();

}catch(Exception e){

e.printStackTrace();

}

return file;

}

3.3 将二进制流转换成图片并存放在相应位置

private static final int BUFFER_SIZE=16*1024;

private static final String F_NAME ="D:\\workspace\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp1\\work\\Catalina\\localhost\\jy\\upload_7d68c7b2_13633574de8__8000_00000000.tmp";

//封装文件对象

private static void copy(File src,File dst){

InputStream in=null;

OutputStream out=null;

try {

in=new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);

out=new BufferedOutputStream(new FileOutputStream(dst),BUFFER_SIZE);

byte[] buffer=new byte[BUFFER_SIZE];

int len=0;

while((len=in.read(buffer))>0){

out.write(buffer, 0, len);

}

catch (Exception e) {

e.printStackTrace();

finally{

if(null!=in){

try {

in.close();

catch (IOException e) {

e.printStackTrace();

}

}

if(null!=out){

try {

out.close();

catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static String fileexecute(int id,File picture,String savepath,String filename)throws Exception{

String dstPath=ServletActionContext.getServletContext().getRealPath(savepath)+"\\"+id;

File mdFile=new File(dstPath);

mdFile.mkdir();

File dstFile=new File(dstPath+"\\"+filename);

copy(picture,dstFile);

return savepath.substring(1)+"/"+id+"/"+filename;

}

iphone客户端上传图片到服务器的更多相关文章

  1. 通过android 客户端上传图片到服务器

    昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...

  2. 客户端挂载NFS服务器中的共享目录(用户后台上传图片与前台上传图片放在同一个服务器上)

    服务器端使用showmount命令查询NFS的共享状态 # showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错 # showmount -a //显示已经与客 ...

  3. Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)

    环境:.NET Framework 3.5 服务: IIS EXpress托管 WCF服务程序 配置:Web.config <!--<connectionStrings> <a ...

  4. android 上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  5. Java乔晓松-android中上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  6. 如何搭建一个WEB服务器项目(六)—— 上传图片至服务器

    上传图片(用户头像)至服务器 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验.先谢谢 ...

  7. WPF上传图片到服务器文件夹

    1.前端用ListBox加载显示多张图片 1 <ListBox Name="lbHeadImages" Grid.Row="1" ScrollViewer ...

  8. 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...

  9. Portable Basemap Server:多数据源多客户端的底图服务器

    Portable Basemap Server:多数据源多客户端的底图服务器 [poll id=”1″]2014.3.8更新v3.1~在线切片转换为MBTiles时,增加RecreateEmptyCa ...

随机推荐

  1. RAID详解[RAID0/RAID1/RAID10/RAID5] (转)

    一.RAID定义RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘 ...

  2. ios 第三方qq登陆,号码禁止授权

    在以下加入測试账号就可以 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWxpbmNleGlhb2hhbw==/font/5a6L5L2T/fontsiz ...

  3. 架构师-盛大许式伟VS金山张宴

    许式伟:作为系统架构师,您一般会从哪些方面来保证网站的高可用性(降低故障时间)? 张宴:很多因素都会导致网站发生故障,从而影响网站的高可用性,比如服务器硬件故障.软件系统故障.IDC机房故障.程序上线 ...

  4. Spring使用经验之Listener综述

    Note:Spring使用版本是4.1.6.RELEASE 1. ContextLoaderListener最基本的SpringListener,加载Spring配置文件 配置名为contextCon ...

  5. struts提交action乱码

    没下雪但冷的让人直打哆嗦的天气,冷醉了的教训!!   问题解决步骤: 1.首先确认页面编码是否准确,并且是否与struts编码配置一样,就算是gbk对GBK,最好大小写保持一样 2.尝试先转码一次吧! ...

  6. 02-4设置第一启动项--U盘装系统中bios怎么设置USB启动

    整个U盘启动里最关键的一步就是设置U盘启动了,本教程内只是以特定型号的电脑为例进行演示,鉴于各种电脑不同BIOS设置U盘启动各有差异,所以如果下面的演示不能适用于你的电脑,建议去百度或者谷歌搜索一下你 ...

  7. Spring Boot整合shiro-登录认证和权限管理

    原文地址:http://www.ityouknow.com/springboot/2017/06/26/springboot-shiro.html 这篇文章我们来学习如何使用Spring Boot集成 ...

  8. WORD文档书签管理

    最近在浏览一个word超长文档,在文档中有几处要点用颜色做了标记,但是在下次查找的时候无法定位,还得一页页去翻,而且无法通过目录概览的形式查看总共做了多少处标记 于是想到了书签 原本以为在视图中能够设 ...

  9. Spring简化配置

    一.提取公共配置 通过bean标签将公共的配置提取出来,然后指定abstract="true". 在其它bean标签中指定其parent就可以.

  10. Android开发之用双缓冲技术绘图

    双缓冲技术主要用在画图,动画效果上,其原理就是:将资源先载入到缓冲区,然后再将缓冲区整个载入到View上面去. 双缓冲技术可以有效防止闪烁,提高显示质量. DrawView.java: package ...