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

2023-07-06   


上传文件的步骤:
   首先,从客户端取得上传的文件,然后,我们将它放入数据流;
   第二,服务器端读取数据流,然后将其保存到缓存;
   第三,将缓存数据保存到数据库;
   第一步
   首先我们要实现用户在浏览器端自由选择文件,然后上传,这里用户选择文件,当然是要求标准的Windows方式,所以,我们在这里使用Form的File文件组件来给用户选择文件。注意,因为上传文件,所以,在Form的属性设置的时候,我们应该设置为:multipart/form-data,这样,才可以正确上传文件。
   下面是上传页面的主要代码:
  
   第二步
   我们可以将上传的文件通过数据流保存到缓存,缓存的大小和文件的具体大小相同,我们可以使用以下的代码来取得文件的具体大小:
   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();
  
  
  


相关内容:

  1. ASP.NET与ASP相比有什么优势
  2. 广州某公司的asp.net面试题
  3. ASP.net和ADO.net面试题
  4. COM组件面试题
  5. ASP.NET如何防止SQL注入
  6. 喜创公司asp.net(机试,笔试题)