使用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 new到底发生了什么
在Js中,我们使用了new关键字来进行实例化 那么在这个new的过程中到底发生了什么? 关于构造函数的return 正常来讲构造函数中是不用写return语句的,因为它会默认返回新创建的对象. 但是, ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Cocos2d Android 环境搭建
1.在开始之前,需要先准备好资源如下,如果安卓开发环境有了直接装第3.4. 1.JDK 点击下载 (1.6) 2.ADT(已经自带Android SDK)点击下载 3.NDK 点击下载 4. ...
- 120项改进:开源超级爬虫Hawk 2.0 重磅发布!
沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...
- beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Python 基础之一变量和赋值
变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...
- 每天一个设计模式-7 生成器模式(Builder)
每天一个设计模式-7 生成器模式(Builder) 一.实际问题 在讨论工厂方法模式的时候,提到了一个导出数据的应用框架,但是并没有涉及到导出数据的具体实现,这次通过生成器模式来简单实现导出成文本,X ...
- 浅谈Web自适应
前言 随着移动设备的普及,移动web在前端工程师们的工作中占有越来越重要的位置.移动设备更新速度频繁,手机厂商繁多,导致的问题是每一台机器的屏幕宽度和分辨率不一样.这给我们在编写前端界面时增加了困难, ...
- ViewController respondsToSelector 错误的解决方法
原因解析:(来自别人博客分析)某个公共类或系统提供的控件,存在delegate方法,当创建此公共控件的容器类已经销毁,而这个控件对应的服务是在其它run loop中进行的,控件销毁或者需要进行状态通知 ...
- CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法
CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法 sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > ...