namespace Model
{
public class FileInfo
{
public int FId { get; set; }
public string FName { get; set; }
public int FSize { get; set; }
public string FileUrl { get; set; }
}
}
//控制器
///
/// 实现文件上传功能
///
/// 上传的文件
///
[HttpPost]
public int UpLoad(HttpPostedFileBase file)
{
if (file==null)
{
return -1;
}
//获取文件名
var fileName = file.FileName;
//获取文件物理路径
var filePath = Server.MapPath("/Files");
var fName = Path.Combine(filePath, fileName);
//保存文件
file.SaveAs(fName);
var info = new Model.FileInfo()
{
FName = fileName,
FSize = file.ContentLength,
FileUrl = “/Files/” + fileName
};
return dal.OnLoad(info);
}
/// <summary>
/// 实现文件下载功能
/// </summary>
/// <param name="fileName">文件名</param>
/// <returns></returns>
public ActionResult DownLoad(string fileName)
{
//获取文件物理路径
var filePath = Server.MapPath("~/Files");
var fName = Path.Combine(filePath, fileName);
return File(fName, "application/*", fileName);
}
//视图
<div style="width:800px;margin:auto;margin-top:50px">
@using (Ajax.BeginForm("UpLoad",null,new AjaxOptions { HttpMethod="post",OnSuccess="upLoadSuccess" },new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td><input id="fileName" type="file" name="file" /></td>
<td>
<input id="Submit1" type="submit" value="上传文件" class="btn btn-default" />
</td>
</tr>
</table>
}
<table class="table table-striped">
<thead>
<tr>
<th>编号</th>
<th>文件名</th>
<th>文件大小</th>
<th>下载</th>
</tr>
</thead>
@*正确显示已经上传文件的信息*@
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.FId</td>
<td>@item.FName</td>
<td>@(item.FSize)kb</td>
<td><a href="javascript:downLoad('@item.FName')">下载</a></td>
</tr>
}
</tbody>
</table>
</div>
<script>
//成功回调函数
function upLoadSuccess(n) {
if (n == -1) {
alert("请选择上传的文件!");
}
else if (n>0) {
alert("上传成功!");
location.reload();
}
else {
alert("上传失败!");
}
}
function downLoad(fileName) {
location.href = "/File/DownLoad?fileName=" + fileName;
}