前端:

<script src="~/Scripts/swfupload/swfupload.js"></script>
<script src="~/Scripts/swfupload/swfupload.queue.js"></script>
<script src="~/Scripts/swfupload/swfupload.handlers.js"></script>

<script type="text/javascript">
$(function() {

$(".uploadImg").each(function() {
$(this).InitSWFUpload({ type: 1, btntext: "上传图片", btnwidth: 86, btnheight: 28, single: false, water: true, thumbnail: true, filesize: "2048", sendurl: "/Pics/UpLoadFile", flashurl: "../../scripts/swfupload/swfupload.swf", filetypes: "*.jpg;*.jpge;*.png;*.gif;" });
});

});

</script>

<div class="uploadImg"></div>

后台:

public class UpLoad
{
int imgmaxheight = 0;
int imgmaxwidth = 0;
int thumbnailwidth = 200;
int thumbnailheight = 200;
int imgsize = 10240;
int attachsize = 51200;
int watermarktype = 2;
int filesave = 2;
string webpath = "/";
string filepath = "upload";
string fileextension = "gif,jpg,png,bmp,rar,zip,doc,xls,txt";
string watermarktext = "ZYAN";
int watermarkposition = 9;
int watermarkfontsize = 12;
string watermarkpic = "watermark.png";
int watermarktransparency = 5;
int watermarkimgquality = 80;
string watermarkfont = "ZYAN";
/// <summary>
/// 裁剪图片并保存
/// </summary>
public bool cropSaveAs(string fileName, string newFileName, int maxWidth, int maxHeight, int cropWidth, int cropHeight, int X, int Y)
{
string fileExt = Utils.GetFileExt(fileName); //文件扩展名,不含“.”
if (!IsImage(fileExt))
{
return false;
}
string newFileDir = Utils.GetMapPath(newFileName.Substring(0, newFileName.LastIndexOf(@"/") + 1));
//检查是否有该路径,没有则创建
if (!Directory.Exists(newFileDir))
{
Directory.CreateDirectory(newFileDir);
}
try
{
string fileFullPath = Utils.GetMapPath(fileName);
string toFileFullPath = Utils.GetMapPath(newFileName);
return Thumbnail.MakeThumbnailImage(fileFullPath, toFileFullPath, 180, 180, cropWidth, cropHeight, X, Y);
}
catch
{
return false;
}
}

/// <summary>
/// 文件上传方法
/// </summary>
/// <param name="postedFile">文件流</param>
/// <param name="isThumbnail">是否生成缩略图</param>
/// <param name="isWater">是否打水印</param>
/// <returns>上传后文件信息</returns>
public string fileSaveAs(HttpPostedFileBase postedFile, bool isThumbnail, bool isWater,string type)
{
try
{
string fileExt = Utils.GetFileExt(postedFile.FileName); //文件扩展名,不含“.”
int fileSize = postedFile.ContentLength; //获得文件大小,以字节为单位
string fileName = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf(@"\") + 1); //取得原文件名
string newFileName = Utils.GetRamCode() + "." + fileExt; //随机生成新的文件名
string newThumbnailFileName = "thumb_" + newFileName; //随机生成缩略图文件名
string upLoadPath = GetUpLoadPath(); //上传目录相对路径
string fullUpLoadPath = Utils.GetMapPath(upLoadPath); //上传目录的物理路径
string newFilePath = upLoadPath + newFileName; //上传后的路径
string newThumbnailPath = upLoadPath + newThumbnailFileName; //上传后的缩略图路径

//检查文件扩展名是否合法
if (!CheckFileExt(fileExt))
{
return "{\"status\": 0, \"msg\": \"不允许上传" + fileExt + "类型的文件!\"}";
}
//检查文件大小是否合法
if (!CheckFileSize(fileExt, fileSize))
{
return "{\"status\": 0, \"msg\": \"文件超过限制的大小啦!\"}";
}
//检查上传的物理路径是否存在,不存在则创建
if (!Directory.Exists(fullUpLoadPath))
{
Directory.CreateDirectory(fullUpLoadPath);
}

//保存文件
postedFile.SaveAs(fullUpLoadPath + newFileName);
//如果是图片,检查图片是否超出最大尺寸,是则裁剪
if (IsImage(fileExt) && (imgmaxheight > 0 || imgmaxwidth > 0))
{
Thumbnail.MakeThumbnailImage(fullUpLoadPath + newFileName, fullUpLoadPath + newFileName,
imgmaxwidth, imgmaxheight);
}
//如果是图片,检查是否需要生成缩略图,是则生成
if (IsImage(fileExt) && isThumbnail && thumbnailwidth > 0 && thumbnailheight > 0)
{
Thumbnail.MakeThumbnailImage(fullUpLoadPath + newFileName, fullUpLoadPath + newThumbnailFileName,
thumbnailwidth, thumbnailheight, "Cut");
}
//如果是图片,检查是否需要打水印
if (IsWaterMark(fileExt) && isWater)
{
switch (watermarktype)
{
case 1:
WaterMark.AddImageSignText(newFilePath, newFilePath,
watermarktext, watermarkposition,
watermarkimgquality, watermarkfont, watermarkfontsize);
break;
case 2:
WaterMark.AddImageSignPic(newFilePath, newFilePath,
watermarkpic, watermarkposition,
watermarkimgquality, watermarktransparency);
break;
}
}
//处理完毕,返回JOSN格式的文件信息
return "{\"status\": 1, \"msg\": \"上传文件成功!\", \"name\": \""
+ fileName + "\", \"path\": \"" + newFilePath + "\", \"thumb\": \""
+ newThumbnailPath + "\", \"size\": " + fileSize + ", \"type\": " + type + ", \"ext\": \"" + fileExt + "\"}";
}
catch
{
return "{\"status\": 0, \"msg\": \"上传过程中发生意外错误!\"}";
}
}

#region 私有方法

/// <summary>
/// 返回上传目录相对路径
/// </summary>
/// <param name="fileName">上传文件名</param>
private string GetUpLoadPath()
{
string path = webpath + filepath + "/"; //站点目录+上传目录
switch (filesave)
{
case 1: //按年月日每天一个文件夹
path += DateTime.Now.ToString("yyyyMMdd");
break;
default: //按年月/日存入不同的文件夹
path += DateTime.Now.ToString("yyyyMM") + "/" + DateTime.Now.ToString("dd");
break;
}
return path + "/";
}

/// <summary>
/// 是否需要打水印
/// </summary>
/// <param name="_fileExt">文件扩展名,不含“.”</param>
private bool IsWaterMark(string _fileExt)
{
//判断是否开启水印
if (watermarktype > 0)
{
//判断是否可以打水印的图片类型
ArrayList al = new ArrayList();
al.Add("bmp");
al.Add("jpeg");
al.Add("jpg");
al.Add("png");
if (al.Contains(_fileExt.ToLower()))
{
return true;
}
}
return false;
}

/// <summary>
/// 是否为图片文件
/// </summary>
/// <param name="_fileExt">文件扩展名,不含“.”</param>
private bool IsImage(string _fileExt)
{
ArrayList al = new ArrayList();
al.Add("bmp");
al.Add("jpeg");
al.Add("jpg");
al.Add("gif");
al.Add("png");
if (al.Contains(_fileExt.ToLower()))
{
return true;
}
return false;
}

/// <summary>
/// 检查是否为合法的上传文件
/// </summary>
private bool CheckFileExt(string _fileExt)
{
//检查危险文件
string[] excExt = { "asp", "aspx", "php", "jsp", "htm", "html", "js", "exe" };
for (int i = 0; i < excExt.Length; i++)
{
if (excExt[i].ToLower() == _fileExt.ToLower())
{
return false;
}
}
//检查合法文件
string[] allowExt = fileextension.Split(',');
for (int i = 0; i < allowExt.Length; i++)
{
if (allowExt[i].ToLower() == _fileExt.ToLower())
{
return true;
}
}
return false;
}

/// <summary>
/// 检查文件大小是否合法
/// </summary>
/// <param name="_fileExt">文件扩展名,不含“.”</param>
/// <param name="_fileSize">文件大小(B)</param>
private bool CheckFileSize(string _fileExt, int _fileSize)
{
//判断是否为图片文件
if (IsImage(_fileExt))
{
if (imgsize > 0 && _fileSize > imgsize * 1024)
{
return false;
}
}
else
{
if (attachsize > 0 && _fileSize > attachsize * 1024)
{
return false;
}
}
return true;
}

#endregion
}

public class PicsController

{

[HttpPost]
public string UpLoadFile(int IsWater = 0, int IsThumbnail = 0, string DelFile = "", string type = "")
{

HttpPostedFileBase _upfile = HttpContext.Request.Files["Filedata"];
bool _iswater = false; //默认不打水印
bool _isthumbnail = false; //默认不生成缩略图

if (IsWater == 1)
_iswater = true;
if (IsThumbnail == 1)
_isthumbnail = true;
if (_upfile == null)
{
return "{\"status\": 0, \"msg\": \"请选择要上传文件!\"}";
}
var upFiles = new UpLoad();
string msg = upFiles.fileSaveAs(_upfile, _isthumbnail, _iswater, type);
//删除已存在的旧文件
if (!string.IsNullOrEmpty(DelFile))
{
Utils.DeleteUpFile(DelFile);
}
return msg;
}

}

swfUpload 上传图片的更多相关文章

  1. swfupload上传图片

    项目结构 以及插件需要的文件如图所示 前端代码: <!DOCTYPE html> <html> <head> <title>SWFUpload</ ...

  2. 用SWFUpload上传图片小例子

    在开发项目中,经常会用到上传图片,接下来我就用一种简单的方式给大家分享一下使用SWFUpload的方式上传图片. 1.在网站根目录下新建一个SWFUpload文件夹,把下载的组建放在SWFUpload ...

  3. SWFUpload多图上传、C#后端跨域传文件带参数

    前几天工作中用到了SWFUpload上传图片,涉及到跨域,因为前端无法实现跨域,所以只能把文件传到后端进行跨域请求,整理分享下. 效果图 前端 html部分 <!DOCTYPE html> ...

  4. PHP之:多图上传

    撰写日期:2016-6-30 15:17:35 Thursday 参考 http://a3147972.blog.51cto.com/2366547/1381136 (08-05ThinkPHP+sw ...

  5. [Asp.net]Uploadify所有配置说明,常见bug问题分析

    引言 之前写过一篇使用swfupload上传图片的文章:周末大放送网站图片上传,水印,预览,截图,这里分析一下,当时使用uploadify上传,无法获取上传后,图片路径的问题.当时没有测试没有成功,一 ...

  6. Uploadify所有配置说明,常见bug问题分析

    引言 之前写过一篇使用swfupload上传图片的文章:周末大放送网站图片上传,水印,预览,截图,这里分析一下,当时使用uploadify上传,无法获取上传后,图片路径的问题.当时没有测试没有成功,一 ...

  7. 使用SWFUpload无刷新上传图片

    使用SWFUpload组件无刷新上传图片 在做项目时,需要用到一个图片的无刷新上传,之前听说过SWFUpload,于是想要通过SWFUpload来进行图片的无刷新上传,由于我的项目属于是ASP.NET ...

  8. swfupload在chrome中点击上传图片按钮无反应的解决办法

    chrome 22.0.XXXXX dev版上传图片按钮点击无反应原因:是GOOGLE的内建Flash PPAPI外挂所导致的. 问题原因: 由于Google浏览器(Chrome),在最新测试版22. ...

  9. ckeditor添加自定义按钮整合swfupload实现批量上传图片

    ckeditor添加自定义按钮整合swfupload实现批量上传图片给ckeditor添加自定义按钮,由于ckeditor只能上传一张图片,如果要上传多张图片就要结合ckfinder,而ckfinde ...

随机推荐

  1. 获取用户请求过来的URL

    document.referer 一段JS搞定

  2. AlertDialog之常见对话框(单选对话框、多选对话框、进度条对话框)

    单选对话框,顾名思义就是只能选一项(setSingleChoiceItems(Items,)) public void click(View v){ //创建对话框类 AlertDialog.Buil ...

  3. thinkphp 配置多数据库

    1配置文件中配置另一数据库连接信息 例如: 'TestModelConfig' => array( //'配置项'=>'配置值' 'DB_TYPE' => 'mysql', // 数 ...

  4. c# 获取网页源码

    C#获取指定网页HTML原代码可使用 WebClient WebRequest HttpWebRequest 三种方式来实现. 当然也可使用webBrowse!在此就不研究webBrowse如何获取了 ...

  5. HTML5+AJAX原生分块上传文件的关键参数设置

    processData:false 这是jquery.ajax的一个参数.默认值为true,表示会将非字符串对象自动变成k1=v1&k2=v2的形式,例如一个数组参数{d:[1,2]},到服务 ...

  6. MapReduce编程示例

    1.将hadoop插件放入eclipse/plugins目录中 2.eclipse配置hadoop 依赖包目录 Window—Preferences 3.新建Map/Reduce Project项目 ...

  7. Eclipse运行内存溢出

    VM arguments中添加如下: -Xms512m-Xmx1024m-XX:PermSize=256m-XX:MaxPermSize=256m-Xmn128m

  8. 开发错误记录10: Butterknife8.1.0 提示NullPointerException空指针

    Butterknife 8.0以后的版本在引入到项目中有变动,按之前的引入方式之后, 会报 空指针! 正确的引入方法是:(在官方的文件上有说明的,记录是为了方便下次引入,直接复制到项目) 在项目的.g ...

  9. Ubuntu14.04下安装Hadoop2.4.0 (单机模式)

    一.在Ubuntu下创建hadoop组和hadoop用户 增加hadoop用户组,同时在该组里增加hadoop用户,后续在涉及到hadoop操作时,我们使用该用户. 1.创建hadoop用户组 2.创 ...

  10. JavaScript使用自定义事件实现简单的模块化开发

    WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有: UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我 ...