C#简单实现文件上传功能

 更新时间:2016年03月17日 15:30:17   投稿:lijiao  
这篇文章主要介绍了C#简单实现文件上传功能,利用MVC+EF+LigerUI 实现的upload上传功能,感兴趣的小伙伴们可以参考一下

最近项目上的一个上传文件功能,项目是MVC+EF+LigerUI 来做的,贴出来大家一起分享下

1、页面需要引用这个JS 和 CSS

<script type="text/javascript" src="/Content/uploadify/jquery.uploadify.min.js"></script>

<link href="/Content/uploadify/uploadify.css" type="text/css" rel="stylesheet" />

2、页面添加Upload.ashx

3、代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.Security;

namespace AL.Web {
 /// <summary>
 /// Upload 的摘要说明
 /// </summary>
 public class Upload : IHttpHandler {

  public void ProcessRequest(HttpContext context) {
   context.Response.ContentType = "text/plain";
   //context.Response.Write("Hello World");

   string r = "";
   //此处有时候穿过来的sn后面还有一些乱七八糟的字符,没研究什么意思,就判断一下,截取一下就完事了,小项目~
   string sn = context.Request.QueryString["sn"];
   if (sn != null && sn.Length > 14) sn = sn.Substring(0, 14);

   if (context.User.Identity.IsAuthenticated == false) {
    // 未登录用户    
   }
   try {
    //获取上传的文件数据
    HttpPostedFile file = context.Request.Files["Filedata"];
    string fileName = file.FileName;
    string fileType = Path.GetExtension(fileName).ToLower();
    //由于不同浏览器取出的FileName不同(有的是文件绝对路径,有的是只有文件名),故要进行处理
    if (fileName.IndexOf(' ') > -1) {
     fileName = fileName.Substring(fileName.LastIndexOf(' ') + 1);
    } else if (fileName.IndexOf('/') > -1) {
     fileName = fileName.Substring(fileName.LastIndexOf('/') + 1);
    }
    //上传的目录
    string uploadDir = "~/Content/uploadfile/TMP/" + System.DateTime.Now.ToString("yyyyMM") + "/";
    //上传的路径
    //生成年月文件夹及日文件夹
    if (Directory.Exists(context.Server.MapPath(uploadDir)) == false) {
     Directory.CreateDirectory(context.Server.MapPath(uploadDir));
    }
    if (Directory.Exists(context.Server.MapPath(uploadDir + System.DateTime.Now.ToString("dd") + "/")) == false) {
     Directory.CreateDirectory(context.Server.MapPath(uploadDir + System.DateTime.Now.ToString("dd") + "/"));
    }

    uploadDir = uploadDir + System.DateTime.Now.ToString("dd") + "/";

    string uploadPath = uploadDir + FormsAuthentication.HashPasswordForStoringInConfigFile(fileName, "MD5").Substring(0, 8) + fileType;
    //保存文件
    file.SaveAs(context.Server.MapPath(uploadPath));
    //下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失
    //DbHelperOleDb.ExecuteSql("insert into [temp](temp_sn,temp_Content) values('" + sn + "','" + uploadPath + "')");

    //Response.Write("1");
    //context.Response.Write("{'IsError':false, 'Data':'" + uploadPath + "'}");
    r = "{'IsError':false, 'Data':'" + uploadPath + "'}";
   } catch (Exception ex) {
    //Response.Write("0");
    //throw ex;
    //context.Response.Write("{IsError: true, data:'" + ex.Message + "'}");
    r = "{'IsError':true, 'Data':'" + ex.Message + "'}";
   } finally {
    r = r.Replace("'", "\"");
    context.Response.Write(r);
    context.Response.End();
   }
  }
  public bool IsReusable {
   get {
    return false;
   }
  }
 }
}

页面前台处理如下图:

#FilesUrl 是一个文本框,将上传文件的路径赋值进去,将地址存入数据库,后续直接根据地址可以下载查看。

以上就是实现C#文件上传功能的简单三步,希望对大家的学习有所帮助。

相关文章

  • C#实现创建标签PDF文件的示例代码

    C#实现创建标签PDF文件的示例代码

    标签PDF文件包含描述文档结构和各种文档元素顺序的元数据,是一种包含后端提供的可访问标记,管理阅读顺序和文档内容表示的逻辑结构的PDF文件。本文将用C#实现创建标签PDF文件,需要的可以参考一下
    2022-08-08
  • C#微信分享代码

    C#微信分享代码

    这篇文章主要为大家详细介绍了C#微信分享的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Ruby创建数组方法总结

    Ruby创建数组方法总结

    在本篇文章里小编给大家分享了关于Ruby创建数组方法的知识点内容,对戏有兴趣的朋友们学习下。
    2019-01-01
  • 一些C#常见面试题目以及答案总结

    一些C#常见面试题目以及答案总结

    这篇文章主要介绍了C#常见面试题目以及答案的相关资料,分别是C#编程语言中的委托、多线程、事件、异常处理、异步编程、LINQ、内存管理、图像处理、内存管理、设计模式等概念和实现方法,需要的朋友可以参考下
    2025-03-03
  • 用C#编写ActiveX控件(三)

    用C#编写ActiveX控件(三)

    用C#编写ActiveX控件(三)...
    2007-03-03
  • unity 实现摄像机绕某点旋转一周

    unity 实现摄像机绕某点旋转一周

    这篇文章主要介绍了unity 实现摄像机绕某点旋转一周,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#在MEF框架中实现延迟加载部件

    C#在MEF框架中实现延迟加载部件

    这篇文章介绍了C#在MEF框架中实现延迟加载部件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C# GDI在控件上绘图的方法

    C# GDI在控件上绘图的方法

    这篇文章主要介绍了C# GDI在控件上绘图的方法,包括了常见的鼠标事件及绘图操作,需要的朋友可以参考下
    2014-09-09
  • c#之圆形无标题栏椭圆窗体的实现详解

    c#之圆形无标题栏椭圆窗体的实现详解

    本篇文章是对c#中圆形无标题栏椭圆窗体的实现方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 访问修饰符(C# 编程指南)

    访问修饰符(C# 编程指南)

    所有类型和类型成员都具有可访问性级别,用来控制是否可以在您程序集的其他代码中或其他程序集中使用它们。您在声明类型或成员时使用以下访问修饰符之一来指定其可访问性
    2011-02-02

最新评论