swfUpload 上传图片

前端:

<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;
}

}

时间: 2024-10-12 18:56:30

swfUpload 上传图片的相关文章

swfupload 上传图片出现 HTTP_ERROR -200

12年做过一个项目,要图片上传,我就在别的项目里面,把swfupload 上传图片给扣过来了. 用了两年都没问题,今天客户和我说,那个上传不了. 我一试,发现真的上传不了,花了半个小时,在baidu查资料,没有找出个什么. 只有自己查,最后我在swfupload.handler.js里面,把发送地址给弹出,我发现了问题,我打开的网址,和发送的地址不是同一个域名. 我到服务器一查,原来是绑定了多个域名. swfupload 上传图片出现 HTTP_ERROR -200

Python+selenium+autoIT组合 处理swfupload上传图片

Python+selenium不能直接处理swfupload图片上传的问题.需要借助鼠标模拟点击按钮,调用autoit生成的exe处理程序完成. 1,selenium 元素定位到上传按钮,模拟鼠标点击 upload_20=self.brow.find_element_by_css_selector("#SWFUpload_20") ActionChains(self.brow).click(upload_20).perform() 2,安装 autoit ,编写生成打开点击上传图片后的

ThinkPHP+swfupload多图上传实例 经典实用的php多图上传

先上一张图片给大家看看效果,有需要就下载学习.不一定非要在ThinkPHP里,只是我非常喜欢去用ThinkPHP做开发了. 好了.现在咱们需要的东西是,下载一个swfupload.js网上很多,自己百度吧.之前有人加我QQ说我写的博文大部分都是代码,看不懂,我以后写博文也先说明思路,然后开始贴代码分享 整个多图上传的流程 1.写好html代码,包括上传以后显示的效果的html,以及加载swfupload组件.和flash 2.在添加图片以后上传到php里处理上传并且返回上传图片的地址,加载到预览

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

ckeditor添加自定义按钮整合swfupload实现批量上传图片给ckeditor添加自定义按钮,由于ckeditor只能上传一张图片,如果要上传多张图片就要结合ckfinder,而ckfinder是收费的,所以就想通过自定义按钮整合swfupload实现一次上传多张图片的功能首先下载并安装ckeditor.下载swfupload解压拷贝到对应的文件目录下3.自定义工具栏按钮:我们可以自定义ckeditor工具栏要显示的按钮,工具栏按钮定义可以参考这里.现在我们需要向工具栏添加一个自定义功能

使用SWFUpload组件无刷新上传图片

使用SWFUpload组件无刷新上传图片 在做项目时,需要用到一个图片的无刷新上传,之前听说过SWFUpload,于是想要通过SWFUpload来进行图片的无刷新上传,由于我的项目属于是ASP.NET项目,所以本文着重讲解ASP.NET 的使用,个人感觉示例基本给的很清晰,参考文档进行开发,并非难事 0.     首先下载swfUpload 包,在下载的包中有samples文件夹,samples下有demos文件夹,打开demos文件夹可看到如下图所示结构 我们待会会用到的包括,swfuploa

SWFUpload 2.5.0版 官方说明文档 中文翻译版

原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2.5.0 Documentation Table of Contents 内容列表 详情请点击翻译:yukon12345 2010.6.10 SWFUpload SWFUpload 版本 2 概览 (Overview) 入门( Getting Started) js对象 (SWFUpload Jav

SwfUpload及imgareaselect使用方法

1.导入文件 Swfupload相关文件 imgareaselect截取插件相关文件 2.前端html代码 添加一个截取图片的按钮,其他为swf所需的html. <body> <div id="content"> <div id="swfu_container" style="margin: 0px 10px;"> <div> <span id="spanButtonPlacehol

swfupload提示“错误302”的解决方法

1.关于图片上传控件,flash控件的显示效果要好一些,本人使用swfupload 2.swfupload上传控件使用方式详见文档 http://www.leeon.me/upload/other/swfupload.html 3.参照文档说明和官方demo,写一个小例子是没有任何问题的,在firefox或者chrome下如碰到302错误,错误堆栈如下: SWF DEBUG: SWFUpload Init Complete SWF DEBUG: SWF DEBUG: ----- SWF DEBU

表单无刷新上传图片

近期做有关上传图片的项目,发现都没有使用无刷新页面上传方式,都是通过传统的上传图片跳转然后显示图片,这对于上传多张图片就太不适用! 网上也有各种异步上传的插件 如 swfupload等比较庞大的插件,利用flash上传,顺带介绍一个比较简洁的ajax上传图片的插件ajaxFileUpload: 直接上地址:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 现在普通上传方式上改造一下,实现无刷新上传 通过隐藏ifram