博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 前端多次上传文件
阅读量:5229 次
发布时间:2019-06-14

本文共 2090 字,大约阅读时间需要 6 分钟。

 

标签: 
 分类:
c#(asp.net)(46) 

<input type="file" />我们常用的上传文件的工具(控件),它和 <asp:FileUpload ID="FileUpload1" runat="server" />不一样,在后台不能直接获取到,不能像

this.FileUpload1.PostedFile……那样去获取

而有时我们必须使用<input type="file" />,如动态给页面添加好多个<input type="file" />,我们后台要怎么获取呢

[html]   
 
 
  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head runat="server">  
  3.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4.     <title></title>  
  5. </head>  
  6. <body>  
  7.     <form runat="server" id="form1" method="post" >  
  8.         <input name="f" type="file" />  
  9.         <input name="s" type="submit" />  
  10.     </form>  
  11. </body>  
  12. </html>  

后台代码:

 

[csharp]   
 
 
  1. //客户端上传的文件  
  2.  System.Web.HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;  
  3.  if (_file.Count > 0)  
  4.  {  
  5.      //文件大小  
  6.      long size = _file[0].ContentLength;  
  7.      //文件类型  
  8.      string type = _file[0].ContentType;  
  9.      //文件名  
  10.      string name = _file[0].FileName;  
  11.      //文件格式  
  12.      string _tp = System.IO.Path.GetExtension(name);  
  13.   
  14.      if (_tp.ToLower() == ".jpg" || _tp.ToLower() == ".jpeg" || _tp.ToLower() == ".gif" || _tp.ToLower() == ".png" || _tp.ToLower() == ".swf")  
  15.      {  
  16.          //获取文件流  
  17.          System.IO.Stream stream = _file[0].InputStream;  
  18.          //保存文件  
  19.          string saveName = DateTime.Now.ToString("yyyyMMddHHmmss") + _tp;  
  20.          string path = DataFactory.WFile.FileUploadPath + "/upload/area/" + saveName;  
  21.          _file[0].SaveAs(path);  
  22.      }  
  23.  }  

写成这样,我们发现每次获得的_file.Count 都是0

我们需要为form加上enctype="multipart/form-data"的属性

表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了

multipart/form-data,才能完整的传递文件数据。

修改代码如下:

 

[html]   
 
 
  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head runat="server">  
  3.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4.     <title></title>  
  5. </head>  
  6. <body>  
  7.     <form runat="server" id="form1" method="post" enctype="multipart/form-data">  
  8.         <input name="f" type="file" />  
  9.         <input name="s" type="submit" />  
  10.     </form>  
  11. </body>  
  12. </html>  

 

后台获取到了Request.Files

 

我们为form 加上runat="server" action可以指向其他页面

 

总结:

 

1.form 必须有runat="server"标记,

2.form  必须有enctype="multipart/form-data"标记,

3.<input type="file" />的runat="server"标记可选

转载于:https://www.cnblogs.com/xiaocandou/p/5158710.html

你可能感兴趣的文章
Idea 提交代码到码云(提交到github也大同小异)
查看>>
c#连接excel2007未安装ISAM解决
查看>>
Mono 异步加载数据更新主线程
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
字典【Tire 模板】
查看>>
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
Perl IO:IO重定向
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>
逻辑运算和while循环.
查看>>
Nhiberate (一)
查看>>
c#后台计算2个日期之间的天数差
查看>>