首页 > 代码库 > webservice跨域上传图片
webservice跨域上传图片
1.上传文件,在一般处理程序中处理
1 //1.接收post过来的文件 2 HttpPostedFile file = context.Request.Files[0]; 3 if (file.ContentLength > 0 || file.ContentLength > 1024) 4 { 5 if (file.ContentType.Contains("image/")) 6 { 7 //2.讲文件转换为文件流 8 Stream stream = file.InputStream; 9 //3.创建容纳文件流的byte数组10 byte[] buff = new byte[stream.Length];11 //4.将流存储进byte数组中12 stream.Read(buff, 0, buff.Length);13 //5.将byte数组转换为base64字符串14 string strParam = Convert.ToBase64String(buff);15 //6.调用webService方法,传入文件字符串16 srImg.wsImgSoapClient cl = new srImg.wsImgSoapClient();17 int result = cl.AddFile(strParam);18 if (result == 0)19 {20 context.Response.Write("上传成功");21 }22 }23 else24 {25 context.Response.Write("您上传的不是图片类型");26 }27 }28 else29 {30 context.Response.Write("您上传的文件大小错误");31 }
2.在webService方法中做如下处理:
1 #region 通过流保存图片文件 2 /// <summary> 3 /// 通过流保存图片文件 4 /// </summary> 5 /// <param name="streamStr">文件流字符串</param> 6 /// <returns></returns> 7 [WebMethod] 8 public int AddFile(string streamStr) 9 {10 //1.将文件字符流转换为byte数组11 byte[] imageBytes = Convert.FromBase64String(streamStr);12 //2.根据数组获取存储区内存流13 MemoryStream stream = new MemoryStream(imageBytes);14 //3.根据file获取stream流,然后根据流生成image对象15 using (Image img = Image.FromStream(stream))16 {17 //设置压缩率18 double rate = 1;19 //开始压缩文件20 return ThumImg(img, rate);21 }22 }
3.通用简单压缩方法,需要搜索更好的优化方法
1 #region 压缩文件 2 /// <summary> 3 /// 压缩文件 4 /// </summary> 5 /// <param name="img">图片对象</param> 6 /// <param name="rate">压缩率</param> 7 /// <returns></returns> 8 public int ThumImg(Image img, double rate) 9 {10 //1.创建新的压缩位图11 using (Image thumImg = new Bitmap((int)(img.Width * rate), (int)(img.Height * rate)))12 {13 using (Graphics g = Graphics.FromImage(thumImg))14 {15 //2.在压缩图片按原图画出缩小版的图16 g.DrawImage(img, new Rectangle(0, 0, thumImg.Width, thumImg.Height), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);17 }18 //3.存储图片文件19 string phyPath = System.Web.HttpContext.Current.Server.MapPath("/upload/");20 thumImg.Save(phyPath + Guid.NewGuid().ToString() + "." + GetImageFormat(thumImg), System.Drawing.Imaging.ImageFormat.Jpeg);21 return 0;22 }23 } 24 #endregion
4.通过image对象判断图片后缀方法
1 #region 返回图片格式(和文件名后缀无关) 2 /// <summary> 3 /// 返回图片格式(和文件名后缀无关) 4 /// </summary> 5 /// <param name="strImgPath">图片路径及名称</param> 6 /// <returns>jpeg\gif\bmp\png\tif\icon\wmf</returns> 7 string GetImageFormat(Image imgSrc) 8 { 9 string strImgFormat = "jpg";10 if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))11 strImgFormat = "jpeg";12 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))13 strImgFormat = "gif";14 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))15 strImgFormat = "bmp";16 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))17 strImgFormat = "png";18 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))19 strImgFormat = "tiff";20 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))21 strImgFormat = "icon";22 else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf))23 strImgFormat = "wmf";24 return strImgFormat;25 } 26 #endregion
webservice跨域上传图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。