图片上传根据stream生成image
对于图片上传代码的整合
因为需要判断上传的图片的宽高是否符合尺寸,所以在最初拿到inputstream的时候,就直接获取image格式的图片
本来是想在下面的checkFile中获取的,不过直接使用System.Drawing.Image.FromStream(request.PostedFile.InputStream);的时候报错了,错误意思是说参数为空,应该是由于上面获取byte[]file的时候,关闭了stream,导致request.PostFile.InputStream也没有了,所以直接在IO中读取数据流的时候获取image格式对象
aaarticlea/png;base64,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" alt="" />
突然想起来还有个 image和bitmap之间的转换:
因为png格式的保存用的是bitmap空白处才不会填充,所以会使用到这种转换
Image originalImage = Image.FromFile(originalImagePath);
Bitmap oriImg = new Bitmap(originalImage);
public class UploadService
{
public bool SaveAs(UploadRequest request, out string filePath, out string errMessage)
{
filePath = string.Empty; //**************************************初始化byte长度.
byte[] file = new Byte[request.PostedFile.ContentLength];
//**************************************读取stream,并转换为byte类型以及获取image类型
System.IO.Stream stream = request.PostedFile.InputStream;
stream.Read(file, , request.PostedFile.ContentLength);
Image image = System.Drawing.Image.FromStream(stream);
stream.Close();
//**************************************判断条件
if(!CheckFile(request,image, file, out errMessage)){
return false;
}
//**************************************设置路径
SetFile(ref request);
filePath = request.SavePath;
//**************************************保存至文件路径
var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
fs.Write(file, , file.Length);
fs.Flush();
fs.Close(); //**************************************获取相对路径
filePath = GetSimplePath(filePath);
if (string.IsNullOrEmpty(errMessage))
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 判断文件的相关条件
/// </summary>
/// <param name="request"></param>
/// <param name="file"></param>
/// <param name="errMessage"></param>
/// <returns></returns>
private bool CheckFile(UploadRequest request,Image image, byte[] file, out string errMessage)
{
errMessage = string.Empty;
// 读取原始文件名
string localFileName = Path.GetFileName(request.PostedFile.FileName); //得到扩展名
var ext = localFileName.Substring(localFileName.LastIndexOf('.') + ).ToLower();
//如果没有设定扩展名,则使用本身的扩展名存储
if (string.IsNullOrEmpty(request.Ext))
{
request.Ext = ext;
}
//判断传入的数据
if (file.Length == )
{
errMessage = "无数据提交";
return false;
}
//判断文件是否超过限定大小
if (file.Length > this.MaxFilesize)
{
errMessage = "文件大小超过" + this.MaxFilesize + "字节";
return false;
}
//判断扩展名是否属于给定的
if (request.Format!=null&& request.Format.Length > && !request.Format.Contains(ext))
{
errMessage = "上传文件扩展名必需为:" + string.Join(",", request.Format);
return false;
}
//判断宽高是否符合要求
if (request.Width > ||request.Height>)
{
if (request.Width>&&Math.Abs( image.Width-request.Width)>)
{
errMessage="宽不符合";
image.Dispose();
return false;
}
else if(request.Height>&&Math.Abs(image.Height-request.Height)>){
errMessage="高不符合";
image.Dispose();
return false;
}
}
return true;
} /// <summary>
/// 设置保存路径以及创建文件夹
/// </summary>
/// <param name="request"></param>
private void SetFile(ref UploadRequest request)
{
//如果路径没有设定,则按照给定的路径设置,不过给定路径的话,一定得先确保这个路径是正确的,且存在的
if (string.IsNullOrEmpty(request.SavePath))
{
string subfolder = "day_" + DateTime.Now.ToString("yyMMdd");
string fileFolder = Path.Combine(UploadConfigContext.UploadPath, request.Folder, subfolder);
//文件全路径
request.SavePath = Path.Combine(fileFolder,
string.Format("{0}{1}.{2}", DateTime.Now.ToString("yyyyMMddhhmmss"),
new Random(DateTime.Now.Millisecond).Next(), request.Ext)
);
if (!Directory.Exists(fileFolder))
{
Directory.CreateDirectory(fileFolder);
}
}
}
} /// <summary>
/// 上传使用的参数
/// </summary>
public class UploadRequest
{
/// <summary>
/// 自行设置时,保存的子文件夹
/// </summary>
public string Folder { get; set; }
/// <summary>
/// 设置路径的,如果没设置,则代码自行设置
/// </summary>
public string SavePath { get; set; }
/// <summary>
/// 上传的数据
/// </summary>
public HttpPostedFileBase PostedFile { get; set; }
/// <summary>
/// 用来自定义控制扩展名的
/// </summary>
public string[] Format { get; set; } /// <summary>
/// 控制宽,<=0则表示不管
/// </summary>
public int Width { get; set; }
/// <summary>
/// 控制高,<=0则表示不管
/// </summary>
public int Height { get; set; } /// <summary>
/// 扩展名
/// </summary>
public string Ext { get; set; }
}
图片上传代码
图片上传根据stream生成image的更多相关文章
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- C#上传图片同时生成缩略图,控制图片上传大小。
#region 上传图片生成缩略图 /// <summary> /// 上传图片 /// </summary> /// <param name="sender& ...
- yii php 图片上传与生成缩略图
今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图 ($pic_action_url = $this->createAbsoluteUrl('h ...
- 图片上传unexpected end of stream
第二次上传头像图片的时候出现 unexpected end of stream 解决办法: 将第一次图片上传成功后做以下操作即可: mBitmapFile.delete(); mBitmapFile ...
- 【咸鱼教程】本地图片上传。动态GIF表情图生成
本案例参考:http://emoji.decathlon.trustingme.cn/但是实现方式不一样. 教程目录一 head first二 打开本地图片功能三 拖拽和缩放手势,调整图片四 gifj ...
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...
- ThinkPHP5.0图片上传生成缩略图实例代码
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误. 我也遇到同样的问题.网上一查,有无数的人说是服务器临时文件目录权限问题. 几经思考后,发 ...
- thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成
目录 1.案例 1.1图片上传 1.2进行图片木马检测 1.3缩略图生成 1.4控制器中调用缩略图生成方法 1.案例 前言:在thinkphp框架的Thinkphp/Library/Thin ...
- [原创]超强C#图片上传,加水印,自动生成缩略图源代码
<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ ...
随机推荐
- C语言 · 最大最小公倍数
算法训练 最大最小公倍数 时间限制:1.0s 内存限制:256.0MB 锦囊1 使用贪心来选择. 锦囊2 当n为奇数时,答案一定是n*(n-1)*(n-2). 当n为偶数时,答案 ...
- NTP原理
ntp原理与设置 原创 2016年09月17日 15:28:16 标签: ntp / 原理 / 设置 / linux / 时钟同 ...
- 【好文收藏】javascript中event对象详解
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- imx6 fec分析
/***************************************************************************** * imx6 fec分析 * 本文主要分析 ...
- 安装cx_Oracle 遇到的杂项问题
1. 解决方法: 将xc用户添加进sudousers 2.安装VMware Tools 更新 http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2F ...
- 下列可以用来解析XML的是( )
A.CSS B.DTD C.SAX D.XSL 解答:C java解析xml文件四种方式:SAX DOM JDOM DOM4J
- (转) 从ffmpeg中提取出YUV数据
有时需要从ffmpeg中提取出YUV数据用作预览,另存什么的. ffmpeg是先解码成YUV, 再以这个YUV作为输入进行编码,所以YUV数据有两种: 解码后的YUV数据, 以及 编码重建的YUV ...
- 二分求幂,快速求解a的b次幂
一个引子 如何求得a的b次幂呢,那还不简单,一个for循环就可以实现! void main(void) { int a, b; ; cin >> a >> b; ; i < ...
- Oracle查询优化-插入、更新与删除
--插入.更新与删除 --1.插入新纪录 --1.1.建立测试表 DROP TABLE TEST; CREATE TABLE TEST( C1 ) DEFAULT '默认1', C2 ) DEFAUL ...
- c++ define的用法(转)
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用 ...