因项目需要,内容编辑希望增加多文件上传功能,我们采用了SWFUpload

SWFUpload下载地址http://swfupload.googlecode.com/
SWFUpload下载档案:SWFUpload-Samples v2.1.0.Release.zip

在\SWFUpload Samples v2.1.0\demos\applicationdemo.net目录下相应的asp.net源码

源码只是演示了把缩略图信息保存到一个List里面,并定义了一个Thumbnail类。

首先,我修改了部分源码,先选择图片,然后保存图片,这样万一编辑选择错误了,可以重新选择,如图所示:

我重新改写了Thumbnail,变成了ImageInfo类,代码如下
public ImageInfo(PicTypeUtility picType, int picSize, int picH, int picW, int picTempValue, string picName, byte[] data)
{
this.picType = picType;
this.picSize = picSize;
this.picHeight = picH;
this.picWidth = picW;
this.picTempValue = picTempValue;
this.picName = picName;
this.data = data;
}
private PicTypeUtility picType;
public PicTypeUtility PicType
{
get { return picType; }
set { picType = value; }
}

private int picSize;
public int PicSize
{
get { return picSize; }
set { picSize = value; }
}

private int picHeight;
public int PicHeight
{
get { return picHeight; }
set { picHeight = value; }
}

private int picWidth;
public int PicWidth
{
get { return picWidth; }
set { picWidth = value; }
}

private int picTempValue;
public int PicTempValue
{
get { return picTempValue; }
set { picTempValue = value; }
}

private string picName;
public string PicName
{
get { return picName; }
set { picName = value; }
}

private byte[] data;
public byte[] Data
{
get { return this.data; }
set { this.data = value; }
}

那么相应的
Thumbnail thumb = new Thumbnail(thumbnail_id, ms.GetBuffer()); 需要修改为:
ImageInfo imageInfo = new ImageInfo(picType, picSize, picHeight, picWidth, 0, picName, ms.GetBuffer());

保存的时候,代码如下:
FileStream fs = new FileStream(Server.MapPath(into.PicName), FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(info.Data);
bw.Close();
fs.Close();

在实际使用中,发现某些图片,保存到文件夹后,尺寸竟然变成了双倍大小。一种65k左右的图片,保存后达到128k。

对代码做了如下修改
修改ImageInfo类
增加Stream SM属性
private System.IO.Stream sm;
public System.IO.Stream SM
{
get { return this.sm; }
set { this.sm = value; }
}
增加以下构造函数
public ImageInfo(PicTypeUtility picType, int picSize, int picH, int picW, int picTempValue, string picName, System.IO.Stream sm)
{
this.picType = picType;
this.picSize = picSize;
this.picHeight = picH;
this.picWidth = picW;
this.picTempValue = picTempValue;
this.picName = picName;
this.sm = sm;
}

并修改upload.aspx
HttpPostedFile imgUpload = Request.Files["Filedata"];
ImageInfo imageInfo = new ImageInfo(picType, picSize, picHeight, picWidth, 0, picName, imgUpload.InputStream);

保存的时候,代码修改如下:
System.Drawing.Image image = System.Drawing.Image.FromStream(info.SM);
image.Save(Server.MapPath(info.PicName));
image.Dispose();

最后,请记住为ImageInfo添加可系列化属性[Serializable()],这个可别忘了

测试,一切正常!

转载于:https://www.cnblogs.com/liuhongqing/archive/2009/04/16/1437214.html

SWFUpload多文件上传,文件大小增大问题相关推荐

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  2. 文件上传 文件大小和类型

    文件上传 文件大小和类型 一.文件上传 二.文件大小和类型

  3. SWFUpload多文件上传使用指南

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得到官网上看它的文档,真是太烦了.所以 ...

  4. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题

    我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jquery form.js可以达到异步上传的目的,但最重要的问题在于,它不能够进行多个文件的上传 ...

  5. swfupload 多文件上传的属性与事件方法总结

    SWFUpload的原理: 利用Flash选择文件后上传,通过Flash和JS交互,对整个过程进行控制--包括页面的DOM操作之类的,都可以通过JS来进行控制. 说白了,就是用Flash上传,JS操作 ...

  6. 文件上传利器SWFUpload使用指南

    2019独角兽企业重金招聘Python工程师标准>>> 文件上传利器SWFUpload使用指南 SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前 ...

  7. 文件上传利器SWFUpload使用指南(转)

    http://www.cnblogs.com/2050/archive/2012/08/29/2662932.html 文件上传利器SWFUpload使用指南 SWFUpload是一个flash和js ...

  8. 文件上传利器SWFUpload使用

    原文链接:http://www.cnblogs.com/2050/archive/2012/08/29/2662932.html SWFUpload是一个flash和js相结合而成的文件上传插件,其功 ...

  9. 文件上传控件SWFUpload使用指南分享

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得到官网上看它的文档,真是太烦了.所以 ...

最新文章

  1. 计算机操作系统第四版习题答案 第一章简答题
  2. 5G+AI成产业新引擎 安防行业切入点在哪里?
  3. Mysql数据库(二)——mysql数据库管理
  4. C++Builder 2010深入TApplication类之属性
  5. 网站安全之XSS漏洞攻击以及防范措施
  6. 读取进程access_IOT指南之嵌入式软件篇gt;5.Linux c编程之进程间通信(管道)
  7. 宗地图绘制要求和规范_国内土地市场宗地图的绘制标准制图规范-【领仕网】...
  8. 某大厂算法工程师面试题详解,问题+答案
  9. 病毒木马查杀实战第012篇:QQ盗号木马之逆向分析
  10. BeanUtils.copyProperties()复制对象时改变属性类型
  11. 高等教育学:教育目的与教育制度
  12. 各主板黑苹果dsdt补丁_苹果系统发展简史
  13. 【千峰】网络安全学习笔记
  14. FBX SDK 总结之中文问题
  15. 联想服务器重装系统只有光标,联想bios重装系统图文教程
  16. mysql 规则引擎_为什么使用规则引擎?
  17. for循环与range方法
  18. Python-文件夹的拷贝操作
  19. 如何把docx转成doc
  20. 【Android开发】Android概述

热门文章

  1. 校运会计算机专业口号,校运动会口号(精选80条)
  2. mysql 大表 驱动_MySql 小表驱动大表
  3. jmeter 及测试
  4. 转 Xcode磁盘空间大清理
  5. 关于telnet的问题
  6. 酒泉-嘉峪关-敦煌-西宁青海湖-兰州六日游之一
  7. KTween 补间引擎
  8. Coolite Toolkit学习笔记一:AjaxEvent、AjaxMethod和Listeners
  9. group by 子句的
  10. cmmi写文档工作教训