zoukankan      html  css  js  c++  java
  • 文件无刷新上传(swfUpload与uploadify)


     

    文件无刷新上传并获取保存到服务器端的路径

        遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现方法

    1. swfUpload
    • 导入swfUpload的开发包
    • 添加js引用,引用swfUpload.js与handler.js文件,如果对swfUpload不了解、有疑问可以看看这篇博客
    • 页面初始化

    • 修改handler.js文件中 上传成功的事件,serverData是服务器端的响应

    1. Uploadify
    • 导入uploadify开发包,从官网下载官网文档中文文档官网示例
    • 添加js与css的引用,jquery.uploadify.js 、uploadify.css

      (注:在css中引用uploadify-cancel.png图片文件的路径是可能不正确,可以在uploadify.css文件中自己进行更改)

    • 页面初始化

      页面初始化时,可以指定许多设置,并对上传成功的事件进行重载,data表示服务器端的响应

    • 服务器端上传处理程序

      1     /// <summary>
      2     /// 上传文件
      3     /// </summary>
      4     public class UploadFileHandler : IHttpHandler, IRequiresSessionState
      5     {
      6         public void ProcessRequest(HttpContext context)
      7         {
      8             context.Response.ContentType = "text/plain";
      9             //验证上传权限
     10             if (context.Session["User"] == null)
     11             {
     12                 context.Response.Write("no permission");
     13                 context.Response.End();
     14                 return;
     15             }
     16             try
     17             {
     18                 //获取上传文件
     19                 //Filedata是客户端已经定义好的,如果想要更改,更改js文件中的配置
     20                 HttpPostedFile image_upload = context.Request.Files["Filedata"];
     21                 //获取文件扩展名
     22                 string fileExt = System.IO.Path.GetExtension(image_upload.FileName).ToLower();
     23                 //验证文件扩展名是否符合要求,是否是允许的图片格式
     24                 if (!FileTypes.IsAllowed(fileExt))
     25                 {
     26                     return;
     27                 }
     28                 //当前时间字符串
     29                 string timeString = DateTime.Now.ToString("yyyyMMddHHmmssfff");
     30                 //保存虚拟路径构建
     31                 string path = "/Upload/" + timeString + fileExt;
     32                 //获取、构建要上传文件的物理路径
     33                 string serverPath = context.Server.MapPath("~/" + path);
     34                 //保存图片到服务器
     35                 image_upload.SaveAs(serverPath);
     36                 //输出保存路径
     37                 context.Response.Write(path);
     38             }
     39             catch (Exception ex)
     40             {
     41                 context.Response.Write("Error");
     42                 //记录日志
     43                 new Common.LogHelper(typeof(UploadFileHandler)).Error(ex);
     44             }
     45         }
     46 
     47         public bool IsReusable
     48         {
     49             get
     50             {
     51                 return false;
     52             }
     53         }
     54     }
     55     public static class FileTypes
     56     {
     57         private static List<string> allowedFileTypes = new List<string>();
     58         //获取允许json配置文件
     59         private static string jsonFilePath = Common.PathHelper.MapPath("~/AllowedFileTypes.json");
     60         
     61         /// <summary>
     62         /// 允许的文件类型
     63         /// </summary>
     64         public static List<string> AllowedFileTypes
     65         {
     66             get
     67             {
     68                 return allowedFileTypes;
     69             }
     70 
     71             set
     72             {
     73                 allowedFileTypes = value;
     74             }
     75         }
     76 
     77         /// <summary>
     78         /// 静态构造方法
     79         /// </summary>
     80         static FileTypes()
     81         {
     82             LoadFileTypesFromJson();
     83         }
     84 
     85         /// <summary>
     86         /// 从json文件中读取允许上传的文件类型
     87         /// </summary>
     88         private static void LoadFileTypesFromJson()
     89         {
     90             string types = File.ReadAllText(jsonFilePath);
     91             AllowedFileTypes = Common.ConverterHelper.JsonToObject<List<string>>(types);
     92         }
     93 
     94         /// <summary>
     95         /// 当添加允许文件类型时,更新到json文件
     96         /// </summary>
     97         public static void FileTypesToJson()
     98         {
     99             string types = Common.ConverterHelper.ObjectToJson(AllowedFileTypes);
    100             File.WriteAllText(jsonFilePath, types);
    101         }
    102 
    103         /// <summary>
    104         /// 新增允许上传文件扩展名
    105         /// </summary>
    106         /// <param name="newFileType"></param>
    107         public static void AddNewFileType(string newFileType)
    108         {
    109             AllowedFileTypes.Add(newFileType);
    110             FileTypesToJson();
    111         }
    112         
    113         /// <summary>
    114         /// 判断某种文件类型是否允许上传
    115         /// </summary>
    116         /// <param name="fileExt">文件扩展名</param>
    117         /// <returns>是否允许上传<code>true</code>允许上传</returns>
    118         public static bool IsAllowed(string fileExt)
    119         {
    120             foreach (string item in AllowedFileTypes)
    121             {
    122                 if (fileExt.Equals(fileExt))
    123                 {
    124                     return true;
    125                 }
    126             }
    127             return false;
    128         }
    129     }
    UploadFileHandler
     1      //uploadify初始化
     2         $(function () {
     3             $('#file_upload').uploadify({
     4                 //指定swf
     5                 'swf': '/uploadify/uploadify.swf',
     6                 //服务器端处理程序
     7                 'uploader': '/Admin/UploadFileHandler.ashx',
     8                 //按钮文本
     9                 buttonText: '上传附件',
    10                 //文件类型
    11                 fileTypeExts: "*.zip;*.rar;*.doc;*.docx;*.xls;*xlsx",
    12                 onUploadSuccess: OnFileUploadSuccess
    13             });
    14         });
    15         function OnFileUploadSuccess(file, data, response) {
    16             //服务器端响应
    17             if (data == 'noPermission') {
    18                 alert('没有上传权限');
    19             }
    20             if (data == 'Error') {
    21                 alert('上传失败');
    22             } else if (response) {
    23                 alert('上传成功~~~');
    24                 $("#filePath").val(data);
    25             }
    26         }
    uploadify
  • 相关阅读:
    【VirtualBox】共享文件夹失效问题
    【Ubuntu】全局代理
    phpStudy(lnmp)集成环境安装
    MemcacheQ 的安装与使用
    Windows 64位下安装Redis详细教程
    http与https的区别
    cookie 和session 的区别详解
    setcookie各个参数详解
    MySQL 数据备份与还原
    linux命令行下导出导入.sql文件
  • 原文地址:https://www.cnblogs.com/weihanli/p/fileUploadWithoutRefresh.html
Copyright © 2011-2022 走看看