MVC 上传 下载
【上传】带进度条
view
注:添加easyui的js文件
<script type="text/javascript">
function fileSelected() {
var file = document.getElementById('fileToUpload').files[0];
var fileName = file.name;
var file_typename = fileName.substring(fileName.lastIndexOf('.'), fileName.length);
if (file_typename == '.doc' || file_typename == '.docx') {//这里限定上传文件文件类型
if (file) {
$("#uploadFile").show();
var fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('fileName').innerHTML = '文件名: ' + file.name;
document.getElementById('fileSize').innerHTML = '大小: ' + fileSize;
document.getElementById('fileType').innerHTML = '类型: ' + file.type;
}
}
else {
$("#uploadFile").hide();
document.getElementById('fileName').innerHTML = "<span style='color:Red'>错误提示:上传文件应该是.doc后缀而不应该是" + file_typename + ",请重新选择文件</span>"
document.getElementById('fileSize').innerHTML = "";
document.getElementById('fileType').innerHTML = "";
}
}
function uploadFile() {
var fd = new FormData();
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
var XMLHttp = null;
if (window.XMLHttpRequest) { //测试 window.XMLHttpRequest 对象是否可用
var xhr = new XMLHttpRequest(); //创建一个新对象
xhr.upload.addEventListener("progress", uploadProgress, false);
//监听事件
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "/Manage/Upload");
xhr.send(fd);
} else if (window.ActiveXObject) {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "/Manage/Upload");
xhr.send(fd);
}
}
//上传进度
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
$('#progressNumber').progressbar('setValue', percentComplete);
}
else {
document.getElementById('progressNumber').innerHTML = '无法计算';
}
}
//上传成功响应
function uploadComplete(evt) {
var message = evt.target.responseText;
alert(message);
}
//上传失败
function uploadFailed(evt) {
alert("上传出错");
}
//取消上传
function uploadCanceled(evt) {
alert("上传已由用户或浏览器取消删除连接");
}
</script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div>
<div class="row" style="padding: 10px">
<div>
论文题目:
<input class="easyui-validatebox easyui-textbox" data-options="required:true" name="Re_Title"
id="Re_Title" style="width: 250px" />
</div>
<label for="file">
论文内容:
</label>
<input type="file" name="fileToUpload" id="fileToUpload" multiple="multiple" onchange="fileSelected();" />
<a id="uploadFile" style="display: none" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-save'"
onclick="uploadFile()">上传</a>
</div>
<div id="fileName" style="padding: 10px">
</div>
<div id="fileSize" style="padding: 10px">
</div>
<div id="fileType" style="padding: 10px">
</div>
<div id="progressNumber" class="easyui-progressbar" style="width: 400px; float: left;
margin-left: 10px;">
</div>
<div style="padding: 95px">
<input id="submit" type="submit" value="保存" class="bottom" />
<input id="reset" type="reset" value="取消" class="bottom" />
</div>
</div>
}
控制器 Controller.cs
/// <summary>
/// 上传文件
/// </summary>
/// <param name="fileToUpload"></param>
/// <returns></returns>
[HttpPost]
[ValidateInput(false)]
public string Upload(HttpPostedFileBase[] fileToUpload)
{
try
{
string FileUrl = string.Empty;
foreach (HttpPostedFileBase file in fileToUpload)
{
string path = System.IO.Path.Combine(Server.MapPath("~/FileUpLoad/Reviews"), System.IO.Path.GetFileName(file.FileName));
file.SaveAs(path);
FileUrl = path;
}
Session["URL"] = FileUrl;
return "上传成功";
}
catch
{
return "上传失败";
}
}
【下载】
view
<a href="/Manage/DownFile?filePath=@Model.Re_Content&fileName=@Model.Re_Title">@Model.Re_Title</a>
controller.cs
#region ReviewDownFile
//本地路径转换成URL相对路径
private string urlconvertor(string imagesurl1)
{
string tmpRootDir = Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
string imagesurl2 = imagesurl1.Replace(tmpRootDir, ""); //转换成相对路径
imagesurl2 = imagesurl2.Replace(@"\", @"/");
return imagesurl2;
}
//下载方法
[HttpGet]
public FileStreamResult DownFile(string filePath, string fileName)
{
var url = filePath;
var newurl = urlconvertor(url);
string absoluFilePath = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["AttachmentPath"] + newurl);
absoluFilePath = absoluFilePath.Replace("\\Manage", "");
return File(new FileStream(absoluFilePath, FileMode.Open), "application/octet-stream", Server.UrlEncode(fileName));
}
#endregion
MVC 上传 下载的更多相关文章
- Spring框架学习(8)spring mvc上传下载
内容源自:spring mvc上传下载 如下示例: 页面: web.xml: <?xml version="1.0" encoding="UTF-8"?& ...
- MVC 上传下载
在Asp.net的WEBform中,上传文件与下载文件处理是很简单的事情,如果转为ASP.NET MVC呢?那就没有那么容易了,难少少,也不是很难,一起来看下本文吧.本文主要讲如何在Asp.net M ...
- asp.net mvc 上传下载文件的几种方式
view: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...
- spring mvc上传下载文件
前端jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...
- Spring MVC 使用介绍(十四)文件上传下载
一.概述 文件上传时,http请求头Content-Type须为multipart/form-data,有两种实现方式: 1.基于FormData对象,该方式简单灵活 2.基于<form> ...
- mvc中文件上传下载
//控制器 public ActionResult FileUpLoad(HttpPostedFileBase f1) { string path = Server.MapPath("~/P ...
- C# --MVC实现简单上传下载
首先创建一个默认的控制器Defaultcontroller 然后生成视图View 在视图里面 创建文件选择器 创建上传.下载按钮 代码如下 <body> <div> <f ...
- springmvc 上传下载
springmvc文件上传下载在网上搜索的代码 参考整理了一份需要使用的jar.commons-fileupload.jar与commons-io-1.4.jar 二个文件 1.表单属性为: enct ...
随机推荐
- 网络编程之socket
网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...
- 【Java EE 学习 46】【Hibernate学习第三天】【多对多关系映射】
一.多对多关系概述 以学生和课程之间的关系为例. 1.在多对多关系中涉及到的表有三张,两张实体表,一张专门用于维护关系的表. 2.多对多关系中两个实体类中应当分别添加对方的Set集合的属性,并提供se ...
- 浅谈HTTP事务的一个过程
一个腾讯在职的朋友问道,当我们在浏览器的地址栏输入 www.baidu.com ,然后回车,这一瞬间页面发生了什么?下面以谷歌浏览器一一解释. 一.域名解析 首先Chrome浏览器会解析www.bai ...
- [数学]内接多边形求pi
- BurpSuite设置公共WIFI抓包
1.电脑连接公共WIFI
- 【CentOS】正则表达式
1.grep [-cinvABC] 'word' filename -c :打印符合要求的行数 --color:显示颜色 -i :忽略大小写(ignore) -n :在输出符合要求的行的同时连同 ...
- history.back新页面跳转
今天遇到一个问题,页面跳转失效,原因在于原来在本页面打开的页面现在改为在新页面打开,历史url记录找不到了,所以不能向上一个地址跳转,解决的办法是使用$_SERVER['HTTP_REFERER']获 ...
- 前台json 的一些 处理 (转)
JS解析json数据并将json字符串转化为数组的实现方法 转自(http://www.jb51.net/article/32795.htm) <!DOCTYPE HTML PUBLIC &qu ...
- Windows中使用OpenBLAS加速R语言计算速度
在使用R的时候会发现R对CPU的利用率并不是很高,反正当我在使用R的时候,无论R做何种运算R的CPU利用率都只有百分子几,这就导致一旦计算量大的时候计算时间非常长,会给人一种错觉(R真的在计算吗?会不 ...
- Windows Server 2008 R2 DNS 服务器迁移