C#实现附件上传和下载功能
程序员文章站
2022-05-14 22:33:59
通常情况下,我们会遇到各种上传附件的情况,以及上传后需要下载,文档格式各种各样,当然这个过程中也是报不同错误,还是一个原则,具体问题,具体分析:需求图:
上传代码实现...
通常情况下,我们会遇到各种上传附件的情况,以及上传后需要下载,文档格式各种各样,当然这个过程中也是报不同错误,还是一个原则,具体问题,具体分析:需求图:
上传代码实现:
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#实现附件上传和下载功能的关键代码,希望对大家的学习有所帮助。