ASP.NET图片上传和截取
一、介绍:图片的上传直接使用ajax就可以了,截取图片的话使用到Jcrop插件。
图片上传资料:https://www.jb51.net/article/87654.htm
截取图片插件:http://code.ciaoca.com/jquery/jcrop/
前端
添加引用
<script src="../js/jquery.min.js"></script>
<link href="../Css/jquery.Jcrop.min.css" rel="stylesheet" />
<script src="../js/jquery.Jcrop.min.js"></script>
HTML代码
<input type="file" name="photo" id="photo" value="" placeholder="免冠照片">
<input type="button" onclick="postData();" value="下一步" name="" style="width: 100px; height: 30px;">
<img id="showPhoto" />
JavaScript代码
<script type="text/javascript">
//文件上传方法
function postData() {
var formData = new FormData();
//上传文件的变量名
formData.append("Filedata", $("#photo")[0].files[0]);
$.ajax({
url: "/ashx/upload.ashx?action=upload", /*接口域名地址*/
type: 'post',
data: formData,
contentType: false,
processData: false,
success: function (res) {
$("#showPhoto").attr("src", res);
CutPhoto();
}
})
}
//截图
function CutPhoto() {
var jcropApi;
$('#showPhoto').Jcrop({
//选框选定时的事件
onSelect: function (c) {
$.ajax({
url: "/ashx/upload.ashx?action=cut",
type: "post",
data: {
"x": c.x,
"y": c.y,
"width": c.w,
"height": c.h,
"imgSrc": $("#showPhoto").attr("src")
},
success: function () { }
});
},
allowSelect: true,//允许新选框
baseClass: 'jcrop'
}, function () {
jcropApi = this;
});
}
</script>
后台
添加一个一般处理程序upload.ashx
代码
public class upload : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//判断action
string action = context.Request["action"];
if (action == "upload")
{
Upload(context);
}
else if (action == "cut")
{
CutPhoto(context);
}
} public bool IsReusable
{
get
{
return false;
}
}
/// <summary>
/// 文件上传
/// </summary>
private void Upload(HttpContext context)
{
//获取文件
HttpPostedFile file = context.Request.Files["Filedata"];
//判断文件是否为空
if (file != null)
{
//获取文件名
string fileName = Path.GetFileName(file.FileName);
//获取文件扩展名
string fileExt = Path.GetExtension(fileName);
//判断文件扩展名是否正确
if (fileExt == ".jpg")
{
//获得文件路径
string filePath = "/UploadFile/" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day;
//判断文件是否存在
if (!System.IO.Directory.Exists(context.Request.MapPath(filePath)))
{
//不存在则创建
Directory.CreateDirectory(context.Request.MapPath(filePath));
}
//生成新的文件名
string newFileName = filePath + "/" + Guid.NewGuid() + fileExt;
//保存文件
file.SaveAs(context.Request.MapPath(newFileName));
//返回文件路径
context.Response.Write(newFileName);
}
}
}
/// <summary>
/// 截取图片
/// </summary>
/// <param name="context"></param>
private void CutPhoto(HttpContext context)
{
int x = Convert.ToInt32(context.Request["x"]);
int y = Convert.ToInt32(context.Request["x"]);
int width = Convert.ToInt32(context.Request["width"]);
int height = Convert.ToInt32(context.Request["height"]);
string imgSrc = context.Request["imgSrc"];
//创建画布
using (Bitmap bitmap = new Bitmap(width, height))
{
//创建画笔
using (Graphics g = Graphics.FromImage(bitmap))
{
//创建图片
using (Image img = Image.FromFile(context.Request.MapPath(imgSrc)))
{
//截取图片
//第一个参数:要画的图片
//第二个参数:画多大
//第三个参数:画图片的哪个部分
g.DrawImage(img, new Rectangle(, , width, height), new Rectangle(x, y, width, height), GraphicsUnit.Pixel);
string newImgName = Guid.NewGuid().ToString()+".jpg";
string dir = "/UploadFile/" + newImgName;
bitmap.Save(context.Request.MapPath(dir),System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
ASP.NET图片上传和截取的更多相关文章
- asp.net图片上传实例
网站后台都需要有上传图片的功能,下面的例子就是实现有关图片上传. 缺点:图片上传到本服务器上,不适合大量图片上传. 第一.图片上传,代码如下: xxx.aspx 复制代码代码如下: <td cl ...
- Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)
写在前面 本文地址:http://www.cnblogs.com/yilezhu/p/9315644.html 作者:yilezhu 上一篇关于Asp.Net Core Web Api图片上传的文章使 ...
- ASP.NET 图片上传工具类 upload image简单好用功能齐全
使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui ...
- asp.net图片上传及删除
方法一:UploadImage cetFU = new UploadImage(); if (cetFU.UpFile(FileUpload1, "teacher_picture" ...
- asp.net图片上传代码
前端: <form action="/ImageUpload.ashx" method="post" enctype="multipart/fo ...
- ASP.NET图片上传(配合jquery.from.js 插件)
前端: js: function AjaxKouBeiShopEdit() { var options = { dataType: "json&q ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- ASP.NET MVC图片上传前预览
回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...
随机推荐
- poj 2955 Brackets (区间dp基础题)
We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...
- uni-app实现图片和视频上传功能
使用uni-app实现点击上传,既可以上传视频,有可以上传图片,图片预览,删除图片和视频功能,最终效果如下.uni-app里面没有提供同时上传视频和图片这个插件,只能靠自己手写, 1.页面布局 通过 ...
- CefSharp禁止弹出新窗体,在同一窗口打开链接,或者在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接
说明:在同一窗口打开链接,只要稍加改造就可以实现,这里实现的是在新Tab页打开链接,并且支持带type="POST" target="_blank"的链接 gi ...
- 微信小程序—支付宝身份验证(支付宝小程序)
查看应用:https://open.alipay.com/platform/keyManage.htm 这里找到您调用接口的应用 支付宝身份验证快速接入:https://docs.open.alip ...
- win10环境下为mongoDB创建用户并认证登录
一.配置mongoDB的bin目录到环境变量中的path;例如:D:\DatabaseService\MongoDB\Server\4.0\bin 二.cmd打开控制台,然后输入mongo回车,可以进 ...
- idea常用快捷键大全
Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找. 编写代码 Ctrl+Shift + Enter,语句完成. “!”,否定完成,输入表达式时按 “!”键. Ctrl+E,最近的文件. Ct ...
- 【30天自制操作系统】day04:C语言与目前执行流程图
用 C 语言直接写入内存 原来依靠汇编 void io_hlt(void); void write_mem8(int addr, int data); void HariMain(void){ int ...
- RDP矢量数据压缩算法
在绘制对象边缘时涉及到了这个算法,记录一下. 该算法递归进行,首先设定一个阈值,在点集的第一个点和最后一个点间拉一条线段,找出剩下的点集中离线段最远的一个点,如果该点到线段的距离小于阈值则舍弃中间的所 ...
- C# 使用System.Media.SoundPlayer播放wav格式的声音文件
using System.Media; string szPath = Application.StartupPath + “\\SoundFile\\sound.wav”; SoundPlayer ...
- MinU: v2 Vulnhub Walkthrough
主机层面扫描: 22 和 3306 端口 3306 端口默认是MySQL端口,但是这里尝试爆破报错,最后通http访问发现非MySQL协议,而是一个http的服务 http的协议我们进行目录枚举下 枚 ...