• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 使用SWFUpload实现无刷新上传图片

使用SWFUpload实现无刷新上传图片

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了swfupload使用,swfupload,swfupload官网,swfupload下载,swfupload上传实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在做项目时,需要用到一个图片的无刷新上传,之前听说过SWFUpload,于是想要通过SWFUpload来进行图片的无刷新上传,由于我的项目属于是ASP.NET项目,所以本文着重讲解ASP.NET 的使用,个人感觉示例基本给的很清晰,参考文档进行开发,并非难事

0. 首先下载swfUpload 包,在下载的包中有samples文件夹,samples下有demos文件夹,打开demos文件夹可看到如下图所示结构

我们待会会用到的包括,swfupload目录下的文件,css不建议使用以避免与自己写的CSS相冲突使得页面布局完全乱掉,如果要添加样式最好自己写

打开 applicationdemo.net目录会看到这样的结构

打开index.html可以看到这样的页面

点击NET2.0下的Application Demo C#项

添加资源引用

将要引用的资源包含到项目中(包括swfupload文件夹下的文件与,demo下的资源文件,handlers.js是在demo中js目录下的js文件)

首先熟悉demo,将demo中的页面包含到项目中

在Defaut.aspx页面中使用swfUpload组件进行图片的无刷新上传直接运行,看效果,大概了解基本过程

修改handlers.js文件

我的项目文件结构大概是这样的

我的处理文件上传的页面是ImageUploadHandler.ashx,获取缩略图的页面是GetThumbHandler.ashx,Thumbnail.cs是demo中App_Code文件夹中的文件,个人觉得像这种只处理逻辑功能而不展现页面的最好都用一般处理程序来实现。由于哪个文件处理上传哪个文件生成缩略图已经在handlers.js文件中写死了,所以必须要修改handlers.js文件以能够使页面正常运行

最终修改版汇总

Thumbnail

/// <summary>
/// 缩略图
/// </summary>
public class Thumbnail
{
  public Thumbnail(string id, byte[] data)
  {
    this.ID = id;
    this.Data = data;
  }

  private string id;

  /// <summary>
  /// 图片id
  /// </summary>
  public string ID
  {
    get
    {
      return this.id;
    }
    set
    {
      this.id = value;
    }
  }

  private byte[] thumbnail_data;

  /// <summary>
  /// 图片的二进制数据
  /// </summary>
  public byte[] Data
  {
    get
    {
      return this.thumbnail_data;
    }
    set
    {
      this.thumbnail_data = value;
    }
  }

  private string contentType;

  /// <summary>
  /// 图片对应的MIME类型
  /// </summary>
  public string ContentType
  {
    get
    {
      return contentType;
    }

    set
    {
      contentType = value;
    }
  }
}

</div>

Html Demo

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Upload Images</title>
  <script src="swfupload/swfupload.js"></script>
  <script src="swfupload/handlers.js"></script>
  <script>
    //注:div的id名称最好不要改,要改的话在handlers.js文件中也要进行修改,div的名称已经在handlers.js文件中写死
    var swfu;
    window.onload = function () {
      swfu = new SWFUpload({
        // 后台设置,设置处理上传的页面
        upload_url: "/Handlers/ImageUploadHandler.ashx",
        // 文件上传大小限制设置
        file_size_limit: "3 MB",
        //文件类型设置,多种格式以英文中的分号分开
        file_types: "*.jpg;*.png",
        //文件描述,与弹出的选择文件对话框相关
        file_types_description : "Images file",
        //设置上传文件数量限制
        file_upload_limit: "1",

        //事件处理程序,最好不要改,事件处理程序已在handlers.js文件中定义
        // Event Handler Settings - these functions as defined in Handlers.js
        // The handlers are not part of SWFUpload but are part of my website and control how
        // my website reacts to the SWFUpload events.
        file_queue_error_handler : fileQueueError,
        file_dialog_complete_handler : fileDialogComplete,
        upload_progress_handler : uploadProgress,
        upload_error_handler : uploadError,
        upload_success_handler : uploadSuccess,
        upload_complete_handler : uploadComplete,

        // 上传按钮设置
        button_image_url : "/swfupload/images/XPButtonNoText_160x22.png",
        button_placeholder_id: "spanButtonPlaceholder",
        button_width: 160,
        button_height: 22,
        button_text : '请选择图片 (最大3M)',
        button_text_style : '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt; } .buttonSmall { font-size: 10pt; }',
        button_text_top_padding: 1,
        button_text_left_padding: 5,

        // swfupload.swf flash设置
        flash_url : "/swfupload/swfupload.swf",  
        //自定义的其他设置
        custom_settings : {
          upload_target: "divFileProgressContainer"
        },
        // 是否开启调试模式,调试时可以设置为true,发布时设置为false
        debug: false
      });
    }
  </script>
</head>
<body>
  <form id="form1">
    <div id="content">
        <h2>Upload Images Demo</h2>
    
    <div id="swfu_container" style="margin: 0px 10px;">
      <div>
        <span id="spanButtonPlaceholder"></span>
      </div>
      <div id="divFileProgressContainer" style="height: 75px;"></div>
      <div id="thumbnails"></div>
    </div>
    </div>
  </form>
</body>
</html>
</div>

ImageUploadHandler

/// <summary>
  /// 图片上传处理
  /// </summary>
  public class ImageUploadHandler : IHttpHandler, IRequiresSessionState
  {
    /// <summary>
    /// 记录日志 logger
    /// </summary>
    private static Common.LogHelper logger = new Common.LogHelper(typeof(ImageUploadHandler));
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/plain";
      System.Drawing.Image thumbnail_image = null;
      System.Drawing.Image original_image = null;
      System.Drawing.Bitmap final_image = null;
      System.Drawing.Graphics graphic = null;
      MemoryStream ms = null;
      try
      {
        //验证用户是否登录,是否有权限上传
        if (context.Session["User"]==null)
        {
          context.Response.Write("没有上传图片的权限!");
          context.Response.End();
          return;
        }
        //获取上传文件
        HttpPostedFile image_upload = context.Request.Files["Filedata"];
        //获取文件扩展名
        string fileExt = System.IO.Path.GetExtension(image_upload.FileName).ToLower();
        //验证文件扩展名是否符合要求,是否是允许的图片格式
        if (fileExt!=".jpg"&&fileExt!=".png")
  



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 使用SWFUpload实现无刷新上传图片

相关文章

  • 2017-05-11.net采用ajax实现邮箱注册和地区选择实例
  • 2017-05-11asp.net 动态表单之数据分页
  • 2017-05-11ADO.NET之连接池技术的使用详解
  • 2018-08-20ASP.NET MVC中SignalR的简单应用
  • 2018-08-20IIS实现反向代理时Cookie域的设置方法
  • 2017-05-11.net框架(framework)版本不匹配的解决方法
  • 2017-05-11ADO.NET 读取EXCEL的实现代码((c#))
  • 2017-05-11ASP.NET防范SQL注入式攻击的方法
  • 2017-05-11asp.net利用Ajax和Jquery在前台向后台传参数并返回值的实例
  • 2017-05-11asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net 图片验证码的HtmlHelper
    • Asp.net中通过Button打开另一个的frm
    • WPF实现转圈进度条效果
    • asp.net如何得到GRIDVIEW中某行某列值的方法
    • asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)
    • 一个ASP.NET的MYSQL的数据库操作类自己封装的
    • C#语言初级入门介绍
    • 使用SNK密钥文件保护你的DLL和代码不被反编译教程
    • asp.net使用AJAX实现无刷新分页
    • 在程序中使用Cookie集合(定义/新建/删除)及案例讲解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有