gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C#实现附件上传和下载功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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#实现附件上传和下载功能的关键代码,希望对大家的学习有所帮助.

最后此篇关于C#实现附件上传和下载功能的文章就讲到这里了,如果你想了解更多关于C#实现附件上传和下载功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com