`
sakakokiya
  • 浏览: 507164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在ASP.NET中如何进行文件上传?

阅读更多
上传文件的步骤:
           首先,从客户端取得上传的文件,然后,我们将它放入数据流;
第二,服务器端读取数据流,然后将其保存到缓存;
第三,将缓存数据保存到数据库;
第一步
首先我们要实现用户在浏览器端自由选择文件,然后上传,这里用户选择文件,当然是要求标准的Windows方式,所以,我们在这里使用Form的File文件组件来给用户选择文件。注意,因为上传文件,所以,在Form的属性设置的时候,我们应该设置为:multipart/form-data,这样,才可以正确上传文件。
下面是上传页面的主要代码:
  <form id=”frmUpload” method=”post” enctype=”multipart/form-data” runat=”server”>
<span>Title</span><br>
<asp:textbox id=”txtTitle” runat=”server” EnableViewState=”False”></asp:textbox>
<asp:requiredfieldvalidator id=”valrTitle” runat=”server” ErrorMessage=”* Required” ControlToValidate=”txtTitle”>* Required</asp:requiredfieldvalidator>
 <br>
 <br>
<span>Docutment to Upload</span><br>
<input id=”txtFileContents” type=”file” runat=”server” NAME=”txtFileContents”>
<br>
<br>
<asp:button id=”btnSubmit” Text=”Submit” Runat=”server”></asp:button>
</form>
第二步
我们可以将上传的文件通过数据流保存到缓存,缓存的大小和文件的具体大小相同,我们可以使用以下的代码来取得文件的具体大小:
  int intDocLen = txtFileContents.PostedFile.ContentLength;
然后,我们可以设置缓存的具体大小了:
  byte[] Docbuffer = new byte[intDoclen];
这样设置以后,我们可以将上传文件的内容保存到缓存中:
   Stream objStream;
objStream = txtFileContents.PostedFile.InputStream;
objStream.Read(Docbuffer,0,intDocLen);
在以上代码中,读取缓存的时候,从缓存的0位置开始,直到整个文件的长度,其实,这就是整个文件或者整个缓存的大小。
第三步
            现在我们需要做的就是将缓存数据保存到数据库,我们已经直到数据表结   构,这样,我们通过编写简单的SQL语句就可以实现这个功能。在上面的内容中,我们编写了一个存储过程,在程序中,我们只要建立SqlCommand对象并且将这个存储过程传递给它,并设置“@Doc”参数取得缓存数据就可以了:
             cmdUploadDoc = new SqlCommand(”uSP_BooksUploadFile”,BooksConn);
             cmdUploadDoc.CommandType = CommandType.StoredProcedure;
             cmdUploadDoc.Parameters.Add(”@Title “,SqlDbType.VarChar,200);
             cmdUploadDoc.Parameters.Add(”@Doc”,SqlDbType.Image);     cmdUploadDoc.Parameters.Add(”@DocType”,SqlDbType.VarChar,4);
             cmdUploadDoc.Parameters[0].Value = txtTitle.Text;   
cmdUploadDoc.Parameters[1].Value = Docbuffer;
cmdUploadDoc.Parameters[2].Value = strDocType;
点击按钮处理代码
private void btnSubmit_Click(object sender, System.EventArgs e)
   {
      string strDocExt;
   //strDocType用于保存上传文件的类型
      string strDocType;
//用于保存文件大小
int intDocLen;
//Stream用于读取上传数据
Stream objStream;
SqlConnection BooksConn;
SqlCommand cmdUploadDoc;
if(IsValid)
     {
        if(txtFileContents.PostedFile != null)
     {
    //文件类型
    strDocExt = CString.Right
    (txtFileContents.PostedFile.FileName,4).ToLower();
switch(strDocExt)
{
   case “.doc”:
   strDocType = “doc”;
break;
case “.ppt”:
strDocType = “ppt”;
break;
case “.htm”:
strDocType = “htm”;
break;
case “.html”:
strDocType = “htm”;
break;
case “.jpg”:
strDocType = “jpg”;
break;
case “.gif”:
strDocType = “gif”;
break;
default:
strDocType = “txt”;
break;
}
//上传文件具体内容
intDocLen = txtFileContents.PostedFile.ContentLength;
byte[] Docbuffer = new byte[intDocLen];
objStream = txtFileContents.PostedFile.InputStream;
//文件保存到缓存
//缓存将保存到数据库
objStream.Read(Docbuffer ,0,intDocLen);
BooksConn = new 
 SqlConnection(”Server=Server;UID=sa;Database=Books”);
   cmdUploadDoc = new 
SqlCommand(”uSP_BooksUploadFile”,BooksConn);
cmdUploadDoc.CommandType = CommandType.StoredProcedure;
cmdUploadDoc.Parameters.Add(”@Title “,SqlDbType.VarChar,200);
cmdUploadDoc.Parameters.Add(”@Doc”,SqlDbType.Image);
cmdUploadDoc.Parameters.Add(”@DocType”,SqlDbType.VarChar,4);
cmdUploadDoc.Parameters[0].Value = txtTitle.Text;
cmdUploadDoc.Parameters[1].Value = Docbuffer ;
cmdUploadDoc.Parameters[2].Value = strDocType;
BooksConn.Open();
   cmdUploadDoc.ExecuteNonQuery();
BooksConn.Close();
}
}
}
分享到:
评论

相关推荐

    asp.net 批量上传文件

    在ASP.NET中实现批量文件上传是一项常见的需求,尤其在处理大量用户数据时。在这个场景下,我们可以使用jQuery库中的`jquery.form`插件来增强页面的交互性,并结合ASP.NET后端技术,实现异步、无刷新的批量文件上传...

    asp.net如何上传大文件?

    在探讨ASP.NET中如何上传大文件这一议题时,我们首先需要理解ASP.NET框架的基本机制以及其对文件上传的默认设置。上传大文件是许多Web应用中的常见需求,尤其是在媒体、文档管理和云存储服务中。然而,上传大文件...

    【ASP.NET编程知识】asp.net单文件带进度条上传的解决方案.docx

    在本文中,我们使用ASP.NET缓存机制来缓存文件上传的信息,然后使用ajax方法来获取缓存的信息,并将其显示在进度条上。 知识点3:使用Guid唯一标识文件上传 在本文中,我们使用Guid来唯一标识文件上传。Guid是一个...

    asp.net ajax 多文件上传

    ASP.NET AJAX 多文件上传是一种在Web应用中实现高效、用户友好的文件上传方式,它结合了ASP.NET技术和AJAX(Asynchronous JavaScript and XML)的优势,提供了异步上传功能,使得用户无需等待整个页面刷新就能完成...

    ASP.NET通过HTML的上传文件标签来上传文件

    在ASP.NET中处理文件上传是常见的需求,尤其是在用户需要提交图片、文档或其他数据文件时。这篇博客文章“ASP.NET通过HTML的上传文件标签来上传文件”将引导我们了解如何在ASP.NET环境中实现文件上传功能。 首先,...

    ASP.NET Web API 接收文件上传

    在ASP.NET Web API中处理文件上传是常见的需求,特别是当你需要允许用户通过Web界面提交文件时。本文将深入探讨如何在ASP.NET Web API中实现文件上传功能,并涉及MIME多部分类型。 首先,让我们了解MIME...

    asp.net 超大文件上传,带进度条源码,亲测能用

    在处理大文件上传时,ASP.NET需要特别的处理,因为默认情况下,它对上传文件的大小有限制,通常为4MB左右。针对超大文件上传的需求,开发者通常需要采取一些策略来优化和扩展这一功能,同时加入进度条显示可以提升...

    在ASP.NET中实现多文件上传(示例源码)

    在ASP.NET中实现多文件上传是一项常见的功能,尤其在构建Web应用程序时,用户可能需要一次上传多个文件,例如图片、文档或视频。本教程将详细解释如何在ASP.NET环境中实现这一功能,包括必要的HTML控件、服务器端...

    asp.net+flash批量上传

    asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件上传 批量上传 上传代码 上载asp.net上传 多文件...

    asp.net 批量上传文件,进度条显示

    在ASP.NET中实现批量文件上传并同时展示进度条效果,是一项常见的需求,特别是在处理大量数据时,用户界面的反馈能够显著提升用户体验。本实例通过结合ASP.NET、Ajax以及ExtJS库,提供了一种高效且直观的解决方案。 ...

    【ASP.NET编程知识】ASP.NET Core文件上传与下载实例(多种上传方式).docx

    在 ASP.NET Core 中,文件上传可以使用多种方式,例如,使用模型绑定、使用 IFormFile 接口、使用 multipart/form-data 等。选择合适的方式,取决于项目的需求和复杂度。 知识点10: 文件上传和下载的应用场景 文件...

    asp.net中文件的上传下载,删除

    首先,我们来了解一下ASP.NET文件上传的基本流程。在ASP.NET中,用户通过表单上传文件时,通常会使用`&lt;input type="file"&gt;`标签。当用户选择一个文件并提交表单后,服务器端的代码(通常是C#或VB.NET)会接收到`...

    基于ASP.net的企业文件管理系统源码.zip

    2. **文件上传与下载**:使用ASP.NET的HttpPostedFileBase类处理文件上传,同时通过HTTP响应流提供文件下载。 3. **文件存储**:文件可能存储在服务器的文件系统、数据库(BLOB存储)或云存储服务(如Azure Blob ...

    asp.net上传、读出、删除文件

    在ASP.NET中,文件上传主要依赖于`&lt;asp:FileUpload&gt;`控件。首先,在网页的HTML部分添加此控件,然后在服务器端处理文件上传。以下是一个简单的示例: ```html &lt;asp:FileUpload ID="FileUpload1" runat="server" /&gt; ...

    asp.net如何上传文件

    总的来说,ASP.NET文件上传涉及HTML表单、服务器端处理、文件保存和可能的HTTP处理程序。理解这些核心概念对于构建可靠的文件上传功能至关重要。同时,考虑到安全性,必须实施适当的验证和权限控制,以保护服务器免...

    asp.net mvc 实现文件上传

    在这个"asp.net mvc 实现文件上传"的例子中,我们将深入探讨如何在ASP.NET MVC应用中实现文件上传功能,这对于任何Web开发人员来说都是一个基本且实用的技能。 首先,我们需要在控制器(Controller)中创建一个动作...

    asp.net上传大文件

    在ASP.NET环境中,上传大文件是一项常见的需求,尤其是在...总之,在ASP.NET中处理大文件上传需要考虑到性能、安全和用户体验等多个方面。通过合理配置、流式处理和使用合适的上传组件,我们可以有效地实现这一功能。

    Asp.net Flex 文件批量上传

    在Asp.net开发中,文件批量上传是一项常见的需求,尤其在大数据时代,用户可能需要一次上传多个文件。Flex作为一款强大的富互联网应用开发框架,能够提供丰富的用户界面体验,与Asp.net结合可以构建高性能、交互性强...

    ASP.net实现多文件上传

    在这个场景中,我们关注的是如何使用ASP.NET来实现多文件上传的功能。多文件上传在现代Web应用中非常常见,例如用户可能需要上传一组照片或者文档。与一次性多选文件自动生成多个连接的上传方式不同,这里描述的实现...

Global site tag (gtag.js) - Google Analytics