webservice跨域上传图片
1.上传文件,在一般处理程序中处理
//1.接收post过来的文件
HttpPostedFile file = context.Request.Files[];
if (file.ContentLength > || file.ContentLength > )
{
if (file.ContentType.Contains("image/"))
{
//2.讲文件转换为文件流
Stream stream = file.InputStream;
//3.创建容纳文件流的byte数组
byte[] buff = new byte[stream.Length];
//4.将流存储进byte数组中
stream.Read(buff, , buff.Length);
//5.将byte数组转换为base64字符串
string strParam = Convert.ToBase64String(buff);
//6.调用webService方法,传入文件字符串
srImg.wsImgSoapClient cl = new srImg.wsImgSoapClient();
int result = cl.AddFile(strParam);
if (result == )
{
context.Response.Write("上传成功");
}
}
else
{
context.Response.Write("您上传的不是图片类型");
}
}
else
{
context.Response.Write("您上传的文件大小错误");
}
ashx后台处理上传文件
2.在webService方法中做如下处理:
#region 通过流保存图片文件
/// <summary>
/// 通过流保存图片文件
/// </summary>
/// <param name="streamStr">文件流字符串</param>
/// <returns></returns>
[WebMethod]
public int AddFile(string streamStr)
{
//1.将文件字符流转换为byte数组
byte[] imageBytes = Convert.FromBase64String(streamStr);
//2.根据数组获取存储区内存流
MemoryStream stream = new MemoryStream(imageBytes);
//3.根据file获取stream流,然后根据流生成image对象
using (Image img = Image.FromStream(stream))
{
//设置压缩率
double rate = ;
//开始压缩文件
return ThumImg(img, rate);
}
}
webservice
3.通用简单压缩方法,需要搜索更好的优化方法
#region 压缩文件
/// <summary>
/// 压缩文件
/// </summary>
/// <param name="img">图片对象</param>
/// <param name="rate">压缩率</param>
/// <returns></returns>
public int ThumImg(Image img, double rate)
{
//1.创建新的压缩位图
using (Image thumImg = new Bitmap((int)(img.Width * rate), (int)(img.Height * rate)))
{
using (Graphics g = Graphics.FromImage(thumImg))
{
//2.在压缩图片按原图画出缩小版的图
g.DrawImage(img, new Rectangle(, , thumImg.Width, thumImg.Height), new Rectangle(, , img.Width, img.Height), GraphicsUnit.Pixel);
}
//3.存储图片文件
string phyPath = System.Web.HttpContext.Current.Server.MapPath("/upload/");
thumImg.Save(phyPath + Guid.NewGuid().ToString() + "." + GetImageFormat(thumImg), System.Drawing.Imaging.ImageFormat.Jpeg);
return ;
}
}
#endregion
图片压缩方法
4.通过image对象判断图片后缀方法
#region 返回图片格式(和文件名后缀无关)
/// <summary>
/// 返回图片格式(和文件名后缀无关)
/// </summary>
/// <param name="strImgPath">图片路径及名称</param>
/// <returns>jpeg\gif\bmp\png\tif\icon\wmf</returns>
string GetImageFormat(Image imgSrc)
{
string strImgFormat = "jpg";
if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
strImgFormat = "jpeg";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
strImgFormat = "gif";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
strImgFormat = "bmp";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
strImgFormat = "png";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
strImgFormat = "tiff";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
strImgFormat = "icon";
else if (imgSrc.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Wmf))
strImgFormat = "wmf";
return strImgFormat;
}
#endregion
通过image对象判断后缀
webservice跨域上传图片的更多相关文章
- ueditor富文本编辑器跨域上传图片解决办法
在使用百度富文本编辑器上传图片的过程中,如果是有一台单独的图片服务器就需要将上传的图片放到图片服务器,比如在a.com的编辑器中上传图片,图片要保存到img.com,这就涉及到跨域上传图片,而在ued ...
- JS-JQuery(JSONP)调用WebService跨域若干技术点
1.JSONP:JSON With Padding,让网页从别的网域获取信息,也就是跨域获取信息,可以当做是一种“工具”,大多数架构Jquery.EXTjs等都支持. 由于同源策略,一般来说位于 se ...
- 项目二(业务GO)——跨域上传图片(请求接口)
之前,就听过“跨域上传”图片的问题,只是疏于研究,也就一再搁置,直至今天再次遇见这个不能避免的“坑”,才不得不思考一下,怎么“跨域上传”图片或者文件? 问题来源: 何为“跨域”? ——就是给你一个接口 ...
- Ajax请求WebService跨域问题 [转载]
1.背景 用Jquery中Ajax方式在asp.net开发环境中WebService接口的调用 2.出现的问题 原因分析:浏览器同源策略的影响(即JavaScript或Cookie只能访问同域下的内容 ...
- 解决api、WebService跨域问题
webapi接口在ajax调用的很多情况下都会出现跨域问题,同样的WebService如果想用ajax调用,也需要接口跨域问题,解决方案如下: 1.IIS配置 打开IIS选择发布后的webapi或者是 ...
- Sliverlight调用WebService跨域问题解决
在SilverlightApplication正常添加webservice(承载网站中建webservice,这样就不存在跨域问题了,即域名一样如:localhost:4676) http://loc ...
- django —— KindEditor - 跨域上传图片
#跨域上传方法 def frontupload(request): if request.method == 'POST': item = {} file = request.FILES.get('i ...
- ajax访问WebService跨域问题
1.先看一个网站介绍,了解跨域问题 HTTP访问控制(CORS) 2.像谷歌.火狐浏览器对一些非简单请求会触发预检请求,首先使用 OPTIONS 方法发起一个预检请求到服务器,然而IE浏览器 ...
- ajax调用webservice 跨域问题
用js或者jquery跨域调用接口时 对方的接口需要做jsonp处理,你的ajax jsonp调用才可以 egg 接口中已经做了jsonp处理,所以可以跨域调用 //$.ajax({ // url: ...
随机推荐
- http://webhelp.esri.com/arcgisexplorer/2500/zh-CN/index.html#add_raster_data.htm
http://webhelp.esri.com/arcgisexplorer/2500/zh-CN/index.html#add_raster_data.htm
- Android应用中使用自定义文字
在Android系统中可以很方便的修改字体样式.系统提供了三种样式,分别是sans,serif,monospace.可以在xml布局文件中通过 android:typeface="[sans ...
- lint使用简介
LINT工具是一种软件质量保证工具,许多国外的大型专业软件公司,如微软公司,都把它作为程序检查工具,在程序合入正试版本或交付测试之前一定要保证通过了LINT检查,他们要求软件工程师在使用LINT时要打 ...
- Cortex-M3学习日志(四) -- UART0实验
LPC1768含有4 个符合16C550工业标准的异步串口UATR0-UART3,其中UART1具有标准的MODEM接口和RS-485/EIA-485接口模式.串口通讯接口是连接计算机.终端.通讯控制 ...
- 百度云是用SOUI开发的产品
http://www.cnblogs.com/setoutsoft/p/4155997.html
- 杂记之activity之间的跳转
代码结构图 manifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xml ...
- 深入理解Linux网络技术内幕——中断与网络驱动程序
接收到帧时通知驱动程序 在网络环境中.设备(网卡)接收到一个数据帧时,须要通知驱动程序进行处理. 有一下几种通知机制: 轮询: 内核不断检查设备是否有话要说.(比較耗资源,但在一些情况 ...
- 虚拟键盘,移动web开发的痛
原生APP的弹出虚拟键盘和收回虚拟键盘,输入框始终贴在虚拟键盘的上方.如下图: 如果移动端web也想做类似的功能,可以实现吗? 你可能会说着:“不就是放一个position: fixed;的输入框在 ...
- 基于Jquery的Ajax分页,只有上一页和下一页
最近项目中用到ajax分页 在网上找到一个非常好用的分页插件jquery-pagination-ajax,以下是链接 http://www.zhangxinxu.com/wordpress/2010/ ...
- SqlDataAdapter.Update批量数据更新
SqlDataAdapter.Update批量数据更新 使用SqlDataAdapter.Update可以方便地对数据库进行快速.批量数据更新.我们最常用的多条数据更新方法是使用循环多次执行SQL语句 ...