.Net 上传文件和下载文件
一、上传文件
1、普通的form表单提交
注意点:
- 请求方式必须为Post。
- 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表单提交
注意点:
- 导入jquery.unobtrusive-ajax.min.js和jquery.form.js两个引用。
- 提交的时候必须用 $("#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 上传文件和下载文件的更多相关文章
- Xshell 本地上传、远程下载文件
1.Xshell登录工具在创建会话的时候,点击最下面的ZMODEM,可以填写下载的路径和加载的路径:2个路径可以一样也可以不一样: 在下载的时候可以下载到相应的路径去.(我设置的是下载前始终询问) 2 ...
- Selenium(十一):设置元素等待、上传文件、下载文件
1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...
- svn上传工程之后下载,打开下载之后的工程缺少文件
当我们把iOS的工程上传到SVN中,当我们再从SVN中下载下来,就会出现错误,这是什么原因呢?我这里出现的错误是找不到文件,后来知道原来是被屏蔽掉了,就是上传的时候不上传某个类型的文件.例如我出错就是 ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- tp3.2 上传文件及下载文件
公共方法 UploadFile.class.php() // 开始 , , , ,];];,; ;; ::::::;,) {//文件上传失败 //捕获错误代码$this->error($file ...
- C# FileStream进行FTP服务上传文件和下载文件
定义FileStream类的操作类:操作类名: FtpUpDown 上传文件 /// <summary> /// 上传文件 /// </summary> /// <par ...
- Loadrunner上传文件与下载文件脚本
Loadrunner上传文件与下载文件脚本 一. 上传脚本 Action() { int uploadImgStatus = 0; //获取上传产品图ID web_reg_save_param_ex( ...
- katalon系列十二:自动化上传文件、下载文件
一.下载文件1.下载文件时,需要先设置好Chrome/Firefox下载路径.不弹出下载框等,大家先学习下在selenium下如何设置:https://www.cnblogs.com/fnng/p/7 ...
- Struts2实现文件的上传与动态下载功能。
本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ...
- Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】
作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS 阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...
随机推荐
- PI接口无法使用.net4以上的解决方法:无法嵌入互操作类型“PISDKClass”。请改用适用的接口。
Interop type 'PISDKClass' cannot be embedded. Use the applicable interface instead. .net开发中,有时候在引用某些 ...
- Winform 实现无边框窗体移动功能
#region 窗体移动 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImp ...
- Eclipse创建一个mybatis工程实现连接数据库查询
Eclipse上创建第一mybatis工程实现数据库查询 步骤: 1.创建一个java工程 2.创建lib文件夹,加入mybatis核心包.依赖包.数据驱动包.并为jar包添加路径 3.创建resou ...
- @Resource无法import相关
一.查找@Resource在那个jar包里 @Resource注解的类路径是:javax.annotation.Resource,是annotation-api.jar包中的类,是JDK1.6支持的注 ...
- PAT 乙级 1009 说反话 (20) C++版
1009. 说反话 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一句英语,要求你编写程序,将句中 ...
- jquery下拉菜单
下拉菜单或者导航是我们在网站开发中不可或缺的网站元素之一,使用jQuery可以制作出简洁易用.美观大方的下拉菜单或者导航效果. 下面展示的12款利用jQuery实现的下拉菜单即导航效果整理自前端大牛爱 ...
- Aysnc的异步执行的线程池
ProxyAsyncConfiguration.java源码: @Configuration @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public clas ...
- 信息安全-加密:AES 加密
ylbtech-信息安全-加密:AES 加密 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一 ...
- Nodejs使用多个分隔符分隔字符串
在nodejs中当需要使用多个分隔符分隔字符串时,可以使用正则表达式作为split函数的参数,具体使用如下: var str = "111@222#333 444@555# 666 777& ...
- [UE4]一个好用的虚幻4插件,根据资源名称动态加载资源,GetCurrentLeveName(获得当前地图名称)
下载地址 一.下载与UE4相对应的版本 二.在工程根目录新建Plugins目录,解压插件. 三.如果工程已经打开,则需要重新打开 四.重新打开工程后,右下角会有提示有新插件可用. 五.这个插件提供 ...