asp.net 中 html 控件 File 的使用

1. 前台代码

<head runat="server">
<title></title>
<link href="../../../stylesheets/bootstrap-theme.css" rel="stylesheet" type="text/css" />
<link href="../../../stylesheets/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="../../../javascripts/bootstrap.js" type="text/javascript"></script>
<script src="../../../javascripts/common-validate.js" type="text/javascript"></script>

<script type="text/javascript">
function checkFile() {
var file = document.getElementsByName("File")[0].value;
if (file.trim() == "") {
alert("请选择文件!!");
return false;
}
if (!isExcelXls(file)) {
alert("Excel文件必须是 .xls 格式!!");
return false;
}
}
</script>

</head>
<body>
<form id="form1" runat="server" enctype="multipart/form-data">   <!--红色部分不能少-->
<div class="panel panel-primary">
<div class="panel-heading">
<h5 class="panel-title">导出装箱单</h5>
</div>
<div class="panel-body" style="margin-top:20px;">
<div class="form-group">
<div style="float:left;width:240px;padding-top:5px;text-align:right;padding-right:10px;">
<label class="control-label">请选择文件</label>
</div>
<div style="float:left;width:300px;padding-top:5px">
<input type="file" name="File" />
</div>
<div style="float:left;width:120px;text-align:right">
<asp:Button ID="btn_export" runat="Server" Text="导出装箱单" CssClass="btn btn-info" OnClientClick="return checkFile()"
οnclick="btn_export_Click" />
</div>
<div style="float:left;width:120px;text-align:right;padding-top:6px;">
<a href="../../excel/template/export-zhuangxiang-template.xls">模板</a>
</div>
</div>
</div>
<div class="panel-footer">
</div>
</div>
</form>
</body>

2.后台获取文件的代码

protected void btn_export_Click(object sender, EventArgs e)
{
HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
int count = files.Count;
string name = files[0].FileName;

string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + name; // 文件名称,当前时间(yyyyMMddhhmmss)
string webFilePath = Server.MapPath("~/viewpage/excel/zhuangxiang/") + fileName; // 服务器端文件路径
files[0].SaveAs(webFilePath);

DataTable table = new DBConn().getExcelContent(webFilePath);

foreach (DataRow dr in table.Rows)
{
if (dr[0].ToString() != "" && dr[1].ToString() != "")
{

}
}


}

 

3.必须加上  enctype属性

enctype  属性有三种取值 :

1、application/x-www-form-urlencoded
2、multipart/form-data
3、text/plain
其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码。例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlencoded");如果不写会报错的,但是在html的form表单里是可以不写enctype=application/x-www-form-urlencoded,因为默认的HTML表单就是这种传输编码类型的。
而multipart/form-data是用来制定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或是是mp3等等。
text/plain是纯文本传输的意思,在发邮件的时候要设置这种编码类型,否则会出现接收时编码混乱的问题。网络上经常拿text/plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据

上面提到的MIME,它的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等等。服务器将 MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。

 

 

转载于:https://www.cnblogs.com/csywustc/p/4663905.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值