關於文件上傳的示例:

转载 2004年11月04日 08:40:00
1:上传到文件夹
首先看aspx页面:
程序代码:
<tr bgcolor="#ffffff">
   <td height="24">
 <input type="file" id="Up_file" class="edline" runat="server" style="WIDTH: 456px; HEIGHT: 20px" size="60" name="Up_file">
   </td>
</tr>
<TR bgcolor="#ffffff">
  <TD height="24" align="center">
     <asp:Button ID="submit" Runat="server" Text="文件上传" CssClass="Cmdbut" Height="20px"></asp:Button>
  </TD>
</TR>

下面是后台,及"文件上传"按钮触发的事件:
程序代码:
private void submit_Click(object sender, System.EventArgs e)
{
      HttpPostedFile postedFile = this.Up_file.PostedFile;                 //得到要上传文件
      string fileName, fileExtension;
     fileName = System.IO.Path.GetFileName(postedFile.FileName);  //文件名称
     if (fileName != "")
    {
         fileExtension = System.IO.Path.GetExtension(fileName);      //上传文件的扩展名
         string new_filename = fileExtension;                                 //给文件重新命名
         //postedFile.FileName:                       客户端文件地址
         //postedFile.ContentType.ToString():   上传的文件类型
         //保存文件到文件夹,地址是当前页面的同一级目录下的files文件夹中
         postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("files/") + new_filename); 
         //.....可以把文件的相应信息保存到数据库中去。
    }
}
在显示这些文件信息的时候,可以直接链接文件地址。

2:上传到数据库
程序代码:
private void submit_Click(object sender, System.EventArgs e)
{
Stream imgStream;
int docSize;
string docName;
string imgContentType;
string imgUploadedName;
imgStream  = this.Up_file.PostedFile.InputStream;      //二进制流
docSize =  this.Up_file.PostedFile.ContentLength;      //文件大小
imgUploadedName = this.Up_file.PostedFile.FileName;    //文件名称
byte[] docBody=new byte[docSize];
imgContentType = this.Up_file.PostedFile.ContentType;  //文件类型
docName =imgUploadedName.Substring(imgUploadedName.LastIndexOf('//')+1);
int n = imgStream.Read(docBody, 0, docSize);  
DataTable temp = mynew.Get_ZH_EngBriefing_byoid(0);   //返回一个空的table
DataRow row = temp.NewRow();
//.....省略其他保存代码
row["DOWN_PATH"] = docBody;   //保存数据到数据库,DOWN_PATH字段为二进制
row["FILENAME"] = docName;       //保存文件名称
row["LX"] = imgContentType;       //保存文件类型
temp.Rows.Add(row);
mynew.SaveZHEngBriefing(temp);  
}


在显示这些文件信息时,如果要实现下载,可以参考下面的代码:
  1):当放置到datagrid中时,必须绑定数据到模板列,比如:
程序代码:
<asp:TemplateColumn HeaderText="文件下载">
 <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
  <ItemStyle HorizontalAlign="Center"></ItemStyle>
  <ItemTemplate>
   <asp:LinkButton id=downLink runat="server" ToolTip='<%# "下载文件:"+DataBinder.Eval(Container.DataItem,"FILENAME").ToString() %>' Text='<%# DataBinder.Eval(Container.DataItem,"FILENAME").ToString() %>' CommandName="downFile">
  </asp:LinkButton>
  </ItemTemplate>
 <FooterStyle HorizontalAlign="Center"></FooterStyle>
</asp:TemplateColumn>

利用datagrid的ItemCommand事件来实现下载
程序代码:
private void Eng_briefing_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  if (e.CommandName == "downFile")
  {
  long EngBriefing_OID = long.Parse(Eng_briefing.Items[e.Item.ItemIndex].Cells[0].Text.ToString());  //首先返回要下载数据的相应行记录关键字OID
  DataTable file = mynew.Get_ZH_EngBriefing_byoid(EngBriefing_OID); //获取该文件所在行记录(这里Get_ZH_EngBriefing_byoid方法是我自己的一个定义的根据OID来返回table)
  if (file.Rows.Count > 0)
  {
   Response.Clear();
   Response.Buffer = false;
   Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(file.Rows[0]["FILENAME"].ToString(),System.Text.Encoding.UTF8));
   Response.BinaryWrite((byte[])file.Rows[0]["DOWN_PATH"]);
   Response.End();       
  }

 }
}

当文件信息以一个LinkButton显示出来的话,就可以利用lLinkButton的onclick事件来实现:
程序代码:
<asp:linkbutton id="FileLink" runat="server"></asp:linkbutton>

程序代码:
private void FileLink_Click(object sender, System.EventArgs e)
{
 long EngBriefing_OID = long.Parse(this.L_EngBriefing_OID.Text.ToString()); //取得文件所在行的相应OID
 DataTable file = mynew.Get_ZH_EngBriefing_byoid(EngBriefing_OID);    //获取文件所在行信息
 if (file.Rows.Count > 0)
 {
   Response.Clear();
   Response.Buffer = false;
   Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(file.Rows[0]["FILENAME"].ToString(),System.Text.Encoding.UTF8));
   Response.BinaryWrite((byte[])file.Rows[0]["DOWN_PATH"]);
   Response.End();       
        }
}

求助文件完整性比对的方法

应用场景: tar打包备份文件,然后用ftp备份文件,文件上传到ftp节点上去以后,怎么判断这个上传上去的文件是完整的啊·? 本地用md5sum a.tar.gz > a.tar.gz.m...
  • lemqs0123
  • lemqs0123
  • 2015年01月09日 16:53
  • 252

psftp常用命令

来源:http://wiki.jxqc.org/mediawiki/index.php?title=Psftp%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4 psftp...
  • perfumekristy
  • perfumekristy
  • 2012年12月21日 21:41
  • 6458

Delphi上傳附件文件

 {Delphi上傳附件文件,並自定義目的文件名,必須對源文件有寫權限 Use Classes,Dialogs,SysUtils}procedure Pro_File_UpLoad;var  sFil...
  • diavy
  • diavy
  • 2009年07月28日 14:06
  • 2359

git上傳文件夾

通过Git bash将自己本地的项目文件夾上传至Github
  • humstone
  • humstone
  • 2017年02月07日 09:42
  • 382

關於ajax傳值問題

用post方式就用Reuqest.Form[ "name "] 用的是POST str   =   "varname=1 "; 尽管参数这样写,也要使用Request.Form[ "varname "...
  • huang7914
  • huang7914
  • 2008年04月30日 14:08
  • 546

php上传多个文件

看网络上很多面向对象的处理方式,觉得很好很不错。但无奈刚刚起步,还不具有这样的实力,写类还不熟悉,而又赶着出成果,只好用面向过程的方式先处理了。   72 73 74 75 ...
  • bingshanzhiling
  • bingshanzhiling
  • 2011年05月05日 16:29
  • 161

VS2008下web页面上传图片的自定义控件源码

本代码来自网络,非本人原创。using System;using System.Collections.Generic;using System.ComponentModel;using System...
  • yandong19861103
  • yandong19861103
  • 2008年11月22日 22:58
  • 458

C#关于上传CSV的代码

一:首先写一个获取CSV文件的方法,返回类型DataSet。代码如下using System; using System.Data; using System.Configuration; us...
  • heiyeshandian
  • heiyeshandian
  • 2011年01月08日 16:38
  • 1171

form+iframe实现无刷新上传文件

原理: 利用form的target属性,将action在iframe中打开,并接收返回结果,实现仿ajax的页面无刷新文件上传。 正是action在iframe中打开,所以,页面才会无刷新。targe...
  • wangjun5159
  • wangjun5159
  • 2015年10月20日 10:39
  • 1280

实现多个文件同时上传

做上传图片功能的时候,经常会遇到这样一个问题,有时候可能需要一次上传多张图片,而用html中默认的上控件,却只能选定一个文件,且不能对文件的后缀进行筛选。需要一次上传多个文件的需求,往往可以通过添加多...
  • tangxiangpi
  • tangxiangpi
  • 2008年11月24日 17:02
  • 5857
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:關於文件上傳的示例:
举报原因:
原因补充:

(最多只允许输入30个字)