您的位置:首页 > 其它

简单二进制上传下载文件

2013-01-03 17:18 295 查看

前端代码:

@model Business.Models.Model
@{
ViewBag.Title = "上传文件";
}

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script type="text/javascript">
var Input = {};
Input.Save = function (e) {
if ($("#id_file").val() == "") {
alert("请选择文件!");
return;
}

var frm = $(e).parents("form");
$(".tabs-panels .panel:visible").find('#frmInput').submit();//frmInput为FormID
};

Input.SaveCallBack = function (result, desc) {
if (result) {
//刷新列表
$('#tbList').datagrid('reload');
alert("提交成功!");
//关闭选项卡
Common.CloseTab();
}
else {
alert("保存失败,请重试!");
}
};
</script>
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { enctype = "multipart/form-data", @id = "frmInput" }))
{
<h6 class="tg-left tt-block title tgd-l">
文件信息</h6>
<div style="margin-top:50px;">
<table class="tbl-input" cellspacing="0">
<colgroup>
<col style="width: 400px;" />
<col class="w5" style="width: 400px;" />
<col style="width: 150px;" />
</colgroup>
<tbody>
<tr>
<th scope="row">
@Html.LabelFor(model => model.ShotName):
</th>
<td>
@Html.TextBoxFor(model => model.ShotName, new { style = "width:300px;", @id = "id_ShotName" })
</td>
<td>
<span class=" btn-infomust">必填项</span>
</td>
</tr>
<tr>
<th scope="row">
文件:
</th>
<td>
<div id="files">
<input type="file" name="FileUpload1" id = "id_file"/><br />
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p class="op" style="text-align: center; margin-top: 50px; margin-bottom: 30px;">
<input type="button" id="btnSave" onclick="Input.Save(this);" class="btn-8" value="保存"/>
<input type="button" value="返回" onclick="Common.CloseTab(this);" class="btn-8" />
</p>
}


后台:

namespace Ports.Controllers.Ports.Controllers
{
[Description("附件管理")]
public class AttachmentController : BaseController
{
#region 文件上传
/// <summary>
/// 文件上传
/// </summary>
/// <returns></returns>
///
public ActionResult Create()
{
var model = new AttachmentModel { };
return View("Create", model);
}

[HttpPost]
public ActionResult Upload(AttachmentModel model)
{
//使用此控件会限制文件大小最大上传4m
//可在web.config中配置<httpRuntime executionTimeout= "5400" maxRequestLength= "2048000"
// useFullyQualifiedRedirectUrl= "false " /> , 自定义上传大小
       //详细见http://www.cnblogs.com/xcsn/archive/2012/12/26/2833442.html

foreach (string upload in Request.Files)
{
if (!HasFiles.HasFile(Request.Files[upload])) continue;

string miniType = Request.Files[upload].ContentType;
string filename = Path.GetFileName(Request.Files[upload].FileName);
//转换文件流成字节数组
BinaryReader reader = new BinaryReader(Request.Files[upload].InputStream);
byte[] fileData = reader.ReadBytes((int)reader.BaseStream.Length);
model.ShotName = model.ShotName == null ? "默认名称" : model.ShotName;
model.Author = "";
          //插入
AttachmentRule.Instance.Insert(model.ShotName, filename, miniType, fileData, model.Author, "");
}
return View("Index");
}
#endregion

#region 文件下载
/// <summary>
/// 文件下载
/// </summary>
/// <param name="id">附件唯一标识</param>
/// <returns></returns>
public FileContentResult GetFile(int id)
{//前台直接使用链接,点击自动下载
var fileinfo = AttachmentRule.Instance.GetEntity(id);
return File(fileinfo.FileData, fileinfo.MimeType, fileinfo.FileName);
}
#endregion
  }
}
public static class HasFiles
{
public static bool HasFile(this HttpPostedFileBase file)
{
return (file != null && file.ContentLength > 0) ? true : false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: