使用localResizeIMG3+WebAPI实现手机端图片上传
惯例~惯例~昨天发表的使用OWIN作为WebAPI的宿主..嗯..有很多人问..是不是缺少了什么 - - 好吧,如果你要把OWIN寄宿在其他的地方...代码如下:
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
string baseAddress = "http://localhost:9000/"; // 管道地址
//开启管道监听
WebApp.Start<Startup>(url: baseAddress);
Console.WriteLine("开启成功!");
// Create HttpCient and make a request to api/values
////创建HTTP客户
//HttpClient client = new HttpClient();
//var response = client.GetAsync(baseAddress + "api/values").Result;
//Console.WriteLine(response);
//Console.WriteLine(response.Content.ReadAsStringAsync().Result); Console.ReadLine();
}
}
}
闲话不多说~让我们开始今天的内容,!
写过上传图片的都知道,在HTML5没出来以前,我们做上传图片预览,必须要先上传到服务器,然后在由服务器来反馈给客户端预览,这样..既不科学也会占用大量的服务器资源.
在BS迅速发展的今天,是时候来改变了..(咳咳,装下B..)
今天我们主要的内容是使用HTML5实现本地预览图片,然后在使用localResizeIMG3+AJAX的形式把图片传到我们昨天的WebAPI~然后存在服务器.
介绍一下localResizeIMG3 嗯..这是一个开源框架..主要目的是:没有蛀牙!!(咳咳,串戏了..),呃,是通过JS把图片压缩(可设置压缩率)成base64字符串 使其可以通过AJAX参数的形式直接上传.
localResizeIMG3 的开源地址:https://github.com/think2011/localResizeIMG3/releases
AJAX..WebAPI..需要我多说么? - -,
下面我们来看实现效果:

说明:我这里的压缩率设置为0.1..你们懂的..(好吧,不懂的话..其实就是我也说了手机端嘛,节省流量,~图片质量还行吧..)
首先我们来看看WebAPI的实现代码~我的风格..你们懂的..不解释太多,都在注释里了..
[HttpPost]
public List<string> DoSaveImages([FromBody]JObject imgJObject)
{
List<string> list = new List<string>();
for (int i = ; i < ; i++)
{
string img = "img" + i;
if (imgJObject.Value<JObject>(img).Value<int>("size") > )
{
//获取base64位数据流
var base64 = imgJObject.Value<JObject>(img).Value<string>("base64");
Regex reg = new Regex("data:image/(.*);base64,");
//正则替换
base64 = reg.Replace(base64, "");
//转换为byte数组
byte[] arr = Convert.FromBase64String(base64);
//转换为内存流
var ms = new MemoryStream(arr);
//转换为bitmap图片对象
var bmp = new Bitmap(ms);
//生成图片名称
string dizhi = DateTime.Now.ToString("yyyyMMddHHmmssffff");
var path = GetMapPath("~/Upimages/") + dizhi + ".jpg";
//存入服务器
bmp.Save(path);
string website = "http://" + HttpContext.Current.Request.Url.Authority;
list.Add(website + "/Upimages/" + dizhi + ".jpg"); }
}
return list; }
下面我们来看看前端JS的代码~(重点~)
首先我们来看看HTML5直接客户端预览图片的代码:
// 选择图片,读取地址预览的辅助函数
//采用HTML5 FileReader接口 兼容IE9以上..
function readURL(input, tmpimg) { if (input.files && input.files[0]) {
var reader = new FileReader();
//注册onload事件
reader.onload = function (e) {
if (!/image/.test(e.target.result)) {
alert('请上传图片格式...');
return false;
}
tmpimg.attr('src', e.target.result);
}
//读取文件成为二进制流
reader.readAsDataURL(input.files[0]);
}
}
好了,下面我们来看看关键的 上传图片的代码:
//定义多图存储数组
var img_data = { img1: {
base64: "",
size: 0
},
img2: {
base64: "",
size: 0
},
img3: {
base64: "",
size: 0
}
}
$(function () {
$(".choseimg input").change(function () {
var $me = $(this);
var index = $(this).attr("img");
var $img = $me.parent().find('img');
readURL(this, $img);
//使用LEZ转换图片
lrz(this.files[0], {
quality: 0.1, //设置压缩率
done: function (results) {
img_data[index].base64 = results.base64;
img_data[index].size = results.base64Len; }
});
});
})
//确定上传
function Submit() {
$.ajax({
cache: true,
type: "POST",
url: 'api/Values/DoSaveImages',
data: JSON.stringify(img_data)
,
contentType: 'application/json',
async: true,
error: function (request) {
alert("出现异常,请联系客服");
},
success: function (data) {
for (var i = 0; i < data.length; i++) {
$("#upimage").append(' <img src="' + data[i] + '" />');
}
}
});
}
这样,我们就完成使用localResizeIMG3+WebAPI实现手机端图片上传的全部功能~
我这里是多图上传所以定义了数组,大家可以根据需求对数据进行处理~
使用localResizeIMG3+WebAPI实现手机端图片上传的更多相关文章
- HTML5手机端拍照上传
1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...
- megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题
最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...
- 手机端 H5上传头像
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 手机端图像编辑上传-cropper
编辑头像,实现相册,照像功能,并能缩放裁剪功能,可自定义UI,引用'cropper.js', 'exif.js' /*初始化裁剪插件*/ var screenWidth = $(window).wid ...
- aps.net mvc webapi 实现文件或图片上传
前几天看到网上有很多复杂的实现方式,觉得没必要,所以就写个简单的实现. 一:首先来看看Api Controller里面的代码: HttpContext.Current.Request.Files 这 ...
- 关于移动手机端富文本编辑器qeditor图片上传改造
日前项目需要在移动端增加富文本编辑,上网找了下,大多数都是针对pc版的,不太兼容手机,当然由于手机屏幕小等原因也限制富文本编辑器的众多强大功能,所以要找的编辑器功能必须是精简的. 找了好久,发现qed ...
- MVC 手机端页面 使用标签file 图片上传到后台处理
最近刚做了一个头像上传的功能,使用的是H5 的界面,为了这个功能搞了半天的时间,找了各种插件,有很多自己都不知道怎么使用,后来只是使用了一个标签就搞定了:如果对样式没有太大的要求我感觉使用这个就足够了 ...
- IOS5开发-http get/post调用mvc4 webapi互操作(图片上传)[转]
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传) 目前最流行的跨平台交互是采用http协议通过JSON对象进行互操作.这种方式最简单,也很高效.webservi ...
- kindeditor修改图片上传路径-使用webapi上传图片到图片服务器
kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 在这里我着重介绍一些使用kindeditor修改图片上传路径并通过webapi上传图片到图片服务器的方案. 因为我使用的 ...
随机推荐
- 干货分享:让你分分钟学会 JS 闭包
闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...
- 使用Visual Studio SDK制作GLSL词法着色插件
使用Visual Studio SDK制作GLSL词法着色插件 我们在Visual Studio上开发OpenGL ES项目时,避免不了写Shader.这时在vs里直接编辑shader就会显得很方便. ...
- SQLServer地址搜索性能优化例子
这是一个很久以前的例子,现在在整理资料时无意发现,就拿出来再改写分享. 1.需求 1.1 基本需求: 根据输入的地址关键字,搜索出完整的地址路径,耗时要控制在几十毫秒内. 1.2 数据库地址表结构和数 ...
- ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件
虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上,不过我们依然有必要以代码实现的角度来介绍一下这个中 ...
- C#中如何调整图像大小
在本篇文章中,我将介绍如何在C#中来调整你想要的图像大小.要实现这一目标,我们可以采取以下几个步骤: 1.首先要获取你想要调整大小的图像: string path = Server.MapPath(& ...
- PHP设计模式(五)建造者模式(Builder For PHP)
建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式. 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用 ...
- Atitit.软件研发团队建设原理与概论 理论
Atitit.软件研发团队建设原理与概论 理论 培训 团队文化建设(内刊,ppt,书籍,杂志等) 梯队建设 技术储备人才的问题 团队建设--小红花评比. 团队建设--文化墙.doc 户外拓展 1. 团 ...
- postgresql无法安装pldbgapi的问题
要对函数进行调试需要安装插件pldbgapi,当初在windows上面的postgresql实例中执行了一下语句就安装上了: create extension pldbgapi; 但是在linux中执 ...
- 跟着老男孩教育学Python开发【第三篇】:Python函数
set 无序,不重复,可嵌套. 函数 创建函数: 1.def关键字,创建函数 2.函数名 3.() 4.函数体 5.返回值 发邮件函数 def sendmail(): import smtpl ...
- 执行git push出现"Everything up-to-date"
在github上git clone一个项目,在里面创建一个目录,然后git push的时候,出现报错"Everything up-to-date" 原因:1)没有git add . ...