C#实现附件上传和下载功能

通常情况下,我们会遇到各种上传附件的情况,以及上传后需要下载,文档格式各种各样,当然这个过程中也是报不同错误,还是一个原则,具体问题,具体分析:需求图:

上传代码实现:
 aspx代码:

 <asp:Panel ID="Panel5" runat="server">
   <fieldset>
   <legend>整体活动效果:</legend>
   <nav class="navbar navbar-default" role="navigation">
    <table cellspacing="0" class="table table-hover" border="0" style="border-collapse: collapse;">
    <tbody>
     <tr>
     <td><strong>需求单名称</strong></td>
     <td colspan="2">
      <strong>添加附件</strong>
     </td>
     <td>附件名称</td>
     </tr>
     <tr>
     <td><asp:Literal ID="LtOrder" runat="server"></asp:Literal></td>
     <td>
     <asp:Button style="margin-right: -55px;" ID="btnImport" runat="server" Text="添加附件" class="btn btn-default" OnClick="btnImport_Click" /></td>
     <td class="Up_file">
      <asp:FileUpload ID="UpLoadTxt" runat="server" class="form-control" />
     </td>
     <td>
      <asp:Literal ID="LAccessory" runat="server"></asp:Literal>
     </td>
     </tr>
    </tbody>
    </table>
   </nav>
   </fieldset>
  </asp:Panel>

cs代码:

#region///上传,文件名称添加数据库,文件保存相应路径
 /// <summary>
 /// 添加附件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void btnImport_Click(object sender, EventArgs e)
 {
  string res = "0";
  string fileName = UpLoadTxt.FileName;//获取要导入的文件名
  if (fileName == null || fileName == "")
  {
  res = "2";
  }
  else
  {
  string savePath = Server.MapPath("~/UploadFiles/ChatLog/");
  FileOperatpr(fileName, savePath);
  string url = savePath + fileName;
  UpLoadTxt.SaveAs(url);
  SqlConnection conn = SqlHelperEx.ConnOpen("SPSDB");
  string ExtName = getFileExt(fileName).ToUpper();//获取上传文件名称
  // string ENDNmae = getFileEND(fileName).ToUpper(); //后缀名
  id = Request["id"];
  res = GetAccessory(conn, fileName, id);
  SqlHelperEx.ConnClose(conn);
  }
  if (res == "2")
  {
  Response.Write("<script>alert('没有要添加的文件,请选中文件后再操作!');window.location.href='SNSNeedingOrder_InfoListView.aspx?id=" + Request["id"] + "';</script>");
  }
  if (res == "0")
  {
  Response.Write("<script>alert('添加失败!');window.location.href='SNSNeedingOrder_InfoListView.aspx?id=" + Request["id"] + "';</script>");
  }
  if(res=="1") {
  Response.Write("<script>alert('添加成功!');window.location.href='SNSNeedingOrder_InfoListView.aspx?id=" + Request["id"] + "';</script>");
  }
  if (res == "3")
  {
  Response.Write("<script>alert('没有需求单,非法操作!');window.location.href='SNSNeedingOrder_InfoListView.aspx?id=" + Request["id"] + "';</script>");
  }
 }
 #region 辅助功能
 /// <summary>
 /// 获取上传文件的后缀名
 /// </summary>
 /// <param name="fileName"></param>
 /// <returns></returns>
 private string getFileEND(string fileName)
 {
  if (fileName.IndexOf(".") == -1)
  return "";
  string[] temp = fileName.Split('.');
  return temp[temp.Length - 1].ToLower();
 }
 /// <summary>
 /// //获取上传文件的名称
 /// </summary>
 /// <param name="fileName"></param>
 /// <returns></returns>
 private string getFileExt(string fileName)
 {
  if (fileName.IndexOf(".") == -1)
  return "";
  string file = "";
  string[] temp = fileName.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries);
  file = temp[0].ToLower();
 return file.ToLower();
 }

 private void FileOperatpr(string fileName, string savePath)
 {
  if (!Directory.Exists(savePath))
  {
  Directory.CreateDirectory(savePath);
  }
  if (File.Exists(savePath + fileName))
  {
  File.Delete(savePath + fileName);
  }
 }

 #endregion

 /// <summary>
 /// 添加文件名
 /// </summary>
 /// <param name="conn"></param>
 /// <param name="filename"></param>
 /// <param name="id"></param>
 private string GetAccessory(SqlConnection conn, string filename, string id)
 {
  string res = "0";
  if (id == "0" || id == "" || id == null)
  {
  res = "3";
  }
  else
  {
  if (filename == null || filename == "")
  {
   res = "2";
  }
  else
  {
   string strOrderID = id;
   string strFileName = filename;
  string strCreateUserId = Session["UserName"].ToString();
   StringBuilder strSql = new StringBuilder();
   // 生成SQL语句;
   strSql.AppendFormat("INSERT INTO BaseSNSAccessory(OrderID,FileName,CreateUserId) values( {0}", Environment.NewLine);
   strSql.AppendFormat(" @OrderID,@FileName,@CreateUserId) {0}", Environment.NewLine);
   SqlParameter[] parameters = {
      new SqlParameter("@OrderID", strOrderID),
      new SqlParameter("@FileName", strFileName),
      new SqlParameter("@CreateUserId", strCreateUserId),
      };
   // 执行
   int result = SqlHelperEx.ExecuteNonQuery(strSql.ToString(), conn, parameters);
   // 返回
   SqlHelperEx.ConnClose(conn);
  if (result == 1)
   {
   res = "1";
   }
   else
   {
   res = "0";
   }
  }
  }
  return res;
 }
 #endregion

下载实现:

 /// <summary>
 /// 获取附件
 /// </summary>
 /// <param name="conn"></param>
 /// <param name="id"></param>
 public void GetAccessory(SqlConnection conn, string id)
 {
  string strsql = "SELECT *,(SELECT OrderName FROM Order_Info WHERE IsValid=1 AND id=bs.OrderID AND IsValid=1) AS OrderName FROM BaseSNSAccessory AS bs WHERE bs.IsValid=1 and bs.OrderID="+id+" ORDER BY bs.id DESC";
  DataTable dt = SqlHelperEx.GetDataTable(strsql, conn);
 if (dt.Rows.Count == 0)
  {
  Ltlog.Text = "无数据";
  return;
  }
  string fileName = "";
  string str = "";
  for (int i = 0; i < dt.Rows.Count; i++)
  {
  fileName = dt.Rows[i]["FileName"].ToString();
  str += "<tr height=\"36\" bgcolor=\"#FFFFFF\">";
  str += "<td>" + dt.Rows[i]["OrderName"].ToString() + "</td>";
  str += "<td> <a href='/EcBossWeb/UploadFiles/ChatLog/" + fileName + "' >点击下载:" + fileName + "</a></td>";
  str += " </tr>";
  }
  LtOrdersory.Text = str.ToString();

  //string filePath = "";

  //FileStream fs = new FileStream(filePath, FileMode.Open); // 设置文件流,filePath为文件路径
  //byte[] bytes = new byte[(int)fs.Length];
  //fs.Read(bytes, 0, bytes.Length); // 读取
  //fs.Close();
  //Response.ClearContent(); // 清楚缓冲区所有内容
  //Response.ClearHeaders(); // 清楚缓冲区所有头
  //Response.ContentType = "application/octet-stream"; // 设置输出流的Http MIME类型
  ////通知浏览器下载文件而不是打开
  //Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); //fileName为需要下载的文件名
  //Response.BinaryWrite(bytes); // 写入输入流
  //Response.Flush(); // 向客户端发送数据流
  //Response.End();
 }

以上就是为大家分享的C#实现附件上传和下载功能的关键代码,希望对大家的学习有所帮助。

(0)

相关推荐

  • C#开发教程之FTP上传下载功能详解

    搭建FTP服务器,供大家参考,具体内容如下 最近要实现这样一个功能:FTP服务器的上传和下载,搜集了一些资料,在c播客上看到昵称为"傻丫头和科技"的作者写的一篇文章写得挺好,有的地方个人觉得不是很详细,自己稍作修改后放在这和大家一起学习分享. 1.首先我们创建一个用户,当然不想创建用户使用当前登录的用户也可以当前用户登录.(右键"计算机"--管理--) 2.我们要安装必须的IIS组件(控制面板--程序--打开或关闭Windows功能) 3.在本地创建一个文件夹作为F

  • C#文件上传与下载的实现方法

    本文实例为大家分享了C#实现文件上传与下载的具体代码,供大家参考,具体内容如下 C#实现文件上传代码: public ActionResult Upload() { // var pathUrl = "http://" + Request.Url.Authority; var file = Request.Files["Filedata"]; var uploadFileName = file.FileName; string filePath = "/F

  • C#实现文件上传与下载功能实例

    最近学习了 C#实现文件上传与下载,现在分享给大家. 1.C#文件上传 创建MyUpload.htm页面,用于测试 <form name="form1" method="post" action="UploadFile.aspx" id="form1" enctype="multipart/form-data"> <input type="file" id="

  • 关于c#连接ftp进行上传下载实现原理及代码

    复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace ftponload { class Program { static void Main(string[] args) { //上传文件的方法 onload("D://outPut.txt"); //下载文件的方法 fload(); } pub

  • C#实现附件上传和下载功能

    通常情况下,我们会遇到各种上传附件的情况,以及上传后需要下载,文档格式各种各样,当然这个过程中也是报不同错误,还是一个原则,具体问题,具体分析:需求图: 上传代码实现:  aspx代码: <asp:Panel ID="Panel5" runat="server"> <fieldset> <legend>整体活动效果:</legend> <nav class="navbar navbar-default&

  • node.js express框架实现文件上传与下载功能实例详解

    本文实例讲述了node.js express框架实现文件上传与下载功能.分享给大家供大家参考,具体如下: 背景 昨天吉视传媒的客户对IPS信息发布系统又提了一个新需求,就是发布端发送消息时需要支持附件的上传,而接收端可以对发布端上传的附件进行下载:接收端回复消息时也需要支持上传附件,发布端可以对所有接收端上传的附件进行打包下载. 功能实现 前台部分 前台使用webUploader插件即可,这是百度开发的一款文件上传组件,具体使用查看它的API即可.这个项目之前开发的时候前台使用了angular.

  • JavaWeb Servlet实现文件上传与下载功能实例

    目录 前言 项目准备 文件上传 前台页面 文件下载 资源准备 超链接下载 后台实现下载 总结 前言 在上网的时候我们常常遇到文件上传的情况,例如上传头像.上传资料等:当然除了上传,遇见下载的情况也很多,接下来看看我们 servlet 中怎么实现文件的上传和下载. 项目准备 idea:2020.1 jdk:1.8 tomcat:10 项目模板:java Enterprise–>Web Application 文件上传 文件上传涉及到前台页面的编写和后台服务器端代码的编写,前台发送文件,后台接收并保

  • SpringBoot+Vue3实现文件的上传和下载功能

    目录 前言 上传前端页面 上传后端代码 下载后端代码 总结 参考文献 前言 上传文件和下载文件是我们平时经常用到的功能,接下来就让我们用SpringBoot,Vue3和ElementPlus组件实现文件的上传和下载功能吧~ 上传前端页面 前端页面我们可以使用ElementPlus框架的el-upload组件完成上传,主要的参数解释如下: action属性:指定请求的url onsuccess属性: 请求成功后的回调函数 我们可以使用axios向后端发起get请求,然后后端返回文件保存的位置 表单

  • Python使用sftp实现上传和下载功能(实例代码)

    在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能. 1.功能实现 根据输入参数判断是文件还是目录,进行上传和下载 本地参数local需要与远程参数remote类型一致,文件以文件名结尾,目录以\结尾 上传和下载的本地和远程目录需要存在 异常捕获 2.代码实现 #!/usr/bin/python # coding=utf-8 import paramiko import os def sftp_upload(host,port,username,passwo

  • MyBatis与SpringMVC相结合实现文件上传、下载功能

    环境:maven+SpringMVC + Spring + MyBatis + MySql 本文主要说明如何使用input上传文件到服务器指定目录,或保存到数据库中:如何从数据库下载文件,和显示图像文件并实现缩放. 将文件存储在数据库中,一般是存文件的byte数组,对应的数据库数据类型为blob. 首先要创建数据库,此处使用MySql数据库. 注意:文中给出的代码多为节选重要片段,并不齐全. 1. 前期准备 使用maven创建一个springMVC+spring+mybatis+mysql的项目

  • Android编程实现图片的上传和下载功能示例

    本文实例讲述了Android编程实现图片的上传和下载功能.分享给大家供大家参考,具体如下: 在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载.在这里介绍如何利用HttpClient实现图片的上传和下载功能. 1 图片上传:上传图片时,首先获得图片的路径,创建文件,并将图片转化为字节流写入到request,并发送该请求. 客户端代码: File file = new File(imageUrl); String httpUrl = httpDomai

  • WebApi2 文件图片上传与下载功能

    Asp.Net Framework webapi2 文件上传与下载 前端界面采用Ajax的方式执行 一.项目结构 1.App_Start配置了跨域访问,以免请求时候因跨域问题不能提交.具体的跨域配置方式如下,了解的朋友请自行略过. 跨域配置:NewGet安装dll Microsofg.AspNet.Cors 然后在App_Start 文件夹下的WebApiConfig.cs中写入跨域配置代码. public static class WebApiConfig { public static vo

  • Java实现FTP文件的上传和下载功能的实例代码

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

  • JavaWeb 文件的上传和下载功能简单实现代码

    一.文件的上传和下载 1.文件上传的原理分析 1.文件上传的必要前提: a.提供form表单,method必须是post           b.form表单的enctype必须是multipart/form-data           c.提供input type="file"类的上传输入域 2.enctype属性 作用:告知服务器请求正文的MIME类型(请求消息头:Content-Type作用是一致的)      可选值: application/x-www-form-urlen

随机推荐