一、上传文件

  1、普通的form表单提交

  注意点:

  1. 请求方式必须为Post。
  2. form表单里必须设置enctype属性(enctype = "multipart/form-data")

下面的代码是实现Demo:  

<div class="row">
@using(Html.BeginForm("Export", "Home", FormMethod.Post, new { @class = "form-horzoontal", @enctype = "multipart/form-data" }))
{
<div class="form-group">
<label class="label-control">请选择文件</label>
<div class="col-md-4">
@Html.TextBox("File","", new { @type="file",@class="form-ontrol"})
</div>
</div>
<div class="form-group">
<div class="clearfix">
<button type="submit" class="btn btn-primary">
<i class="icon-ok"></i>提交
</button>
<button type="reset" class="btn btn-danger">
<i class="icon-undo"></i>重置
</button>
</div>
</div>
}
</div>
/// <summary>
/// 提交文件
/// </summary>
[HttpPost]
public void Export(HttpPostedFileBase File)
{
//HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
//HttpPostedFile file = files[0];
//拓展名
string Extension = System.IO.Path.GetExtension(File.FileName);
//文件名
string FileName = DateTime.Now.ToFileTime() + Extension;
//文件存放路径
string Path = Server.MapPath("~/upload/");
//如果文件路径不存在
if (!System.IO.Directory.Exists(Path))
{
System.IO.Directory.CreateDirectory(Path);
} File.SaveAs(Path + "//" + FileName);
}

  2、Ajax表单提交 

  注意点:

  1. 导入jquery.unobtrusive-ajax.min.jsjquery.form.js两个引用。
  2. 提交的时候必须用 $("#form").ajaxSubmit()的提交方式。否则接收不到文件流。 

  下面的代码是实现Demo:

<div class="row">
@using(Ajax.BeginForm("Export", "Home", null,new AjaxOptions { HttpMethod="Post"}, new {@id="form", @class = "form-horzoontal", @enctype = "multipart/form-data" }))
{
<div class="form-group">
<label class="label-control">请选择文件</label>
<div class="col-md-4">
@Html.TextBox("File","", new { @type="file",@class="form-ontrol"})
</div>
</div>
<div class="form-group">
<div class="clearfix">
<button type="button" class="btn btn-primary" onclick="sub()">
<i class="icon-ok"></i>提交
</button>
<button type="reset" class="btn btn-danger">
<i class="icon-undo"></i>重置
</button>
</div>
</div>
}
</div>
@section Scripts{
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.form.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script>
//ajax提交表单
function sub() {
$("#form").ajaxSubmit();
}
</script>
}
/// <summary>
/// 提交文件
/// </summary>
[HttpPost]
public void Export(HttpPostedFileBase File)
{
//HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
//HttpPostedFile file = files[0];
//拓展名
string Extension = System.IO.Path.GetExtension(File.FileName);
//文件名
string FileName = DateTime.Now.ToFileTime() + Extension;
//文件存放路径
string Path = Server.MapPath("~/upload/");
//如果文件路径不存在
if (!System.IO.Directory.Exists(Path))
{
System.IO.Directory.CreateDirectory(Path);
} File.SaveAs(Path + "//" + FileName);
}

二、下载文件

  下面是两种实现方式

  1、

/// <summary>
/// 下载文件
/// </summary>
public void DownloadFile()
{
//获取respone对象
HttpResponse respone = System.Web.HttpContext.Current.Response;
//文件绝对路径
string Path = Server.MapPath("~/upload/131348099436645924.JPG");
string fileName = System.IO.Path.GetFileName(Path);
System.IO.FileInfo file = new FileInfo(Path);
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + "\"");
Response.AddHeader("Content-Length", file.Length.ToString());
//响应类型
Response.ContentType = "application/octet-stream";
Response.WriteFile(Path);
Response.Flush();
Response.End();
}

  2、

/// <summary>
/// 下载文件
/// </summary>
public FileResult DownloadFile()
{
//文件绝对路径
string Path = Server.MapPath("~/upload/131348099436645924.JPG");
string fileName = System.IO.Path.GetFileName(Path);
return File(Path, "application/octet-stream",fileName);
}

.Net 上传文件和下载文件的更多相关文章

  1. Xshell 本地上传、远程下载文件

    1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...

  2. Selenium(十一):设置元素等待、上传文件、下载文件

    1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...

  3. svn上传工程之后下载,打开下载之后的工程缺少文件

    当我们把iOS的工程上传到SVN中,当我们再从SVN中下载下来,就会出现错误,这是什么原因呢?我这里出现的错误是找不到文件,后来知道原来是被屏蔽掉了,就是上传的时候不上传某个类型的文件.例如我出错就是 ...

  4. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  5. tp3.2 上传文件及下载文件

    公共方法 UploadFile.class.php() // 开始 , , , ,];];,; ;; ::::::;,) {//文件上传失败 //捕获错误代码$this->error($file ...

  6. C# FileStream进行FTP服务上传文件和下载文件

    定义FileStream类的操作类:操作类名: FtpUpDown 上传文件 /// <summary> /// 上传文件 /// </summary> /// <par ...

  7. Loadrunner上传文件与下载文件脚本

    Loadrunner上传文件与下载文件脚本 一. 上传脚本 Action() { int uploadImgStatus = 0; //获取上传产品图ID web_reg_save_param_ex( ...

  8. katalon系列十二:自动化上传文件、下载文件

    一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...

  9. Struts2实现文件的上传与动态下载功能。

    本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ...

  10. Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】

    作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS             阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...

随机推荐

  1. WPF Demo16 资源

    <Window x:Class="RescourceDemo1.MainWindow" xmlns="http://schemas.microsoft.com/wi ...

  2. 黄聪:HBuilder复制PHP项目后,【转到定位】功能失效

    1.[工具]--[插件安装]--[Aptana php插件]--[选择]--[安装] 2.随便开几个文件,操作一下[编辑]--[整理代码格式]就可以了

  3. setvlet基础知识

    Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览 ...

  4. Python 创建XML

    https://blog.csdn.net/seetheworld518/article/details/49535285

  5. 如果遇到Hadoop集群正常,MapReduce作业运行出现错误,如何来查看作业运行日志(图文详解)

    不多说,直接上干货! 这个时候我们可以进入logs下的userlogs 备注:userlogs目录下有很多个以往运行的作业,我选择最新的最大编号的作业,就是我们当前运行作业的日志.然后找到stderr ...

  6. 大数据:Parquet文件存储格式【转】

    一.Parquet的组成 Parquet仅仅是一种存储格式,它是语言.平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎 ...

  7. Android接听、挂断电话

    新建一个名为ITelephony的aidl文件,注意包名不能改变,因为是通过反射方式来实现接听和挂断的

  8. 0001 - Spring MVC中的注解

    1.概述 Spring MVC框架提供了功能强大的注解,大大简化了代码开发的同时也提升了程序的可扩展性 2.注解 2.1.@RequestMapping Spring MVC通过@RequestMap ...

  9. 转]GSM模块信号强度CSQ与RSSI的对应关系

    使用GSM或者3G模块时,都会接触到信号强度CSQ.通过指令AT+CSQ,模块返回当前的信号质量,例如: AT+CSQ +CSQ: 28,0 其中28就是信号强度CSQ,但它不是真实的CSQ,他应该叫 ...

  10. javaweb项目中遇到的一些乱码问题

    在做javaweb项目时,我们经常会遇到一些乱码问题: 首先,确定一点思想:要想不乱码,你要保证编码一致就行了,即统一编码~ 其一,jsp等页面中的中文显示乱码(这里不只是说jsp文件,其它文件也有这 ...