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

时间:2022-04-14 07:05:06

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

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

上传代码实现:
 aspx代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<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代码:  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#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

下载实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/// <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#实现附件上传和下载功能的关键代码,希望对大家的学习有所帮助。