简单二进制上传下载文件

简介: 前端代码: @model Business.Models.Model @{ ViewBag.Title = "上传文件"; } var Input = {}; Input.

 

前端代码:

@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;
    }
}

 

相关文章
|
7月前
|
存储 机器学习/深度学习 人工智能
创新场景丨小鹏汽车:端到端智驾真正竞赛在云端
算力上的提前布局,让小鹏汽车在国内率先实现端到端智能驾驶大模型量产上车。小鹏汽车认为,端到端只是开始,不是终局,真正的竞赛正在云端展开,云端大模型才是制胜关键。拥有强大算力的阿里云,支撑小鹏汽车端到端大模型的快速迭代。
|
缓存 监控 前端开发
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
【4月更文挑战第30天】本文探讨了Flutter应用启动优化策略,包括理解启动过程、资源加载优化、减少初始化工作、界面布局简化、异步初始化、预加载关键数据、性能监控分析以及案例和未来优化方向。通过这些方法,可以缩短启动时间,提升用户体验。使用Flutter DevTools等工具可助于识别和解决性能瓶颈,实现持续优化。
476 0
【Flutter 前端技术开发专栏】Flutter 应用的启动优化策略
|
存储 Docker 容器
企业实战(6)修改Harbor镜像仓库默认存储路径
企业实战(6)修改Harbor镜像仓库默认存储路径
715 0
|
5月前
|
运维 分布式计算 Kubernetes
【能力比对】K8S数据平台VS数据平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
【能力比对】K8S数据平台VS数据平台
|
JavaScript 定位技术 API
高德地图自定义定位 按钮
高德地图自定义定位 按钮
983 0
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
1278 2
JS上传文件(base64字符串和二进制文件流)
|
机器学习/深度学习 传感器 安全
基于模糊神经网络的移动机器人路径规划matlab仿真
该程序利用模糊神经网络实现移动机器人的路径规划,能在含5至7个静态未知障碍物的环境中随机导航。机器人配备传感器检测前方及其两侧45度方向上的障碍物距离,并根据这些数据调整其速度和方向。MATLAB2022a版本下,通过模糊逻辑处理传感器信息,生成合理的路径,确保机器人安全到达目标位置。以下是该程序在MATLAB2022a下的测试结果展示。
|
7月前
|
传感器 存储 安全
鸿蒙开发:权限管理之权限声明
本文,主要简单概述了为什么要有权限管理,以及权限管理的声明原则,这些都是基本的概念内容,大家做为了解即可,重要的是怎么声明权限,在什么位置声明权限,这一点需要掌握。
254 16
鸿蒙开发:权限管理之权限声明
|
8月前
|
人工智能 自然语言处理 程序员
一文彻底搞定从0到1手把手教你本地部署大模型
Ollama 是一个开源工具,旨在简化大型语言模型(LLM)在本地环境的部署与使用。它支持多种预训练模型(如Llama 3、Phi 3等),允许用户根据设备性能选择不同规模的模型,确保高效运行。Ollama 提供了良好的数据隐私保护,所有处理均在本地完成,无需网络连接。安装简便,通过命令行即可轻松管理模型。适用于开发测试、教育研究和个人隐私敏感的内容创作场景。
2928 0
一文彻底搞定从0到1手把手教你本地部署大模型
|
移动开发 前端开发 数据安全/隐私保护
iOS代码混淆-从入门到放弃
iOS代码混淆-从入门到放弃
300 0