当前位置: 首页 > news >正文

.Net MVC4 上传大文件,并保存表单

1. 前台 cshtml

</pre><pre name="code" class="csharp">@model BLL.BLL.Product  
  
@{  
    ViewBag.Title = "Add";  
}  
  
<h2>Add</h2>  
  
<form action="../Product/Add" method="post" enctype="multipart/form-data">  
<table>  
<tr>  
<td>@Html.Label("ProductName:")</td>  
<td>@Html.TextBoxFor(m=>m.ProductName)</td>  
</tr>  
  
<tr>  
<td>@Html.Label("ProductDesc:")</td>  
<td>@Html.TextBoxFor(m=>m.ProductDesc)</td>  
</tr>  
  
<tr>  
<td>@Html.Label("ProductPrice:")</td>  
<td>@Html.TextBoxFor(m=>m.ProductPrice)</td>  
</tr>  
  
<tr>  
<td>@Html.Label("ProductImage:")</td>  
<td><input type="file" name="ProductImage"/></td>  
</tr>  
  
<tr>  
<!--下拉列表框,数据由后台初始化-->  
<td>@Html.Label("ProductCategory:")</td>  
<td>@Html.DropDownListFor(m=>m.CId, @ViewBag.cList as IEnumerable<SelectListItem>)</td>  
</tr>  
  
<tr>  
<td><input type="submit" value="submit" /></td></tr>  
  
</table>  
</form>  
View Code

 

 2. 后台Controller

public ActionResult Add() {  
    
    ShoppingDataContext dc = new ShoppingDataContext();  
  
    //初始化下拉列表框的数据  
    var linq = from c in dc.ProductCategories select new { c.CategoryId,c.CategoryName};  
    List<SelectListItem> cList = new List<SelectListItem>();  
    foreach(var category in linq){  
        SelectListItem item = new SelectListItem() { Text=category.CategoryName, Value=category.CategoryId};  
        cList.Add(item);          
    }  
    ViewBag.cList = cList;  
    return View();  
}  
  
  
[HttpPost]  
public ActionResult Add(Product p)  
{  
    Stream uploadStream = null;  
    FileStream fs = null;  
    try  
    {  
        //文件上传,一次上传1M的数据,防止出现大文件无法上传  
        HttpPostedFileBase postFileBase = Request.Files["ProductImage"];  
         uploadStream = postFileBase.InputStream;  
        int bufferLen = 1024;  
        byte[] buffer = new byte[bufferLen];  
        int contentLen = 0;  
          
        string fileName = Path.GetFileName(postFileBase.FileName);  
        string baseUrl = Server.MapPath("/");  
        string uploadPath = baseUrl + @"Images\Upload\Product\";  
         fs = new FileStream(uploadPath + fileName, FileMode.Create, FileAccess.ReadWrite);  
  
        while ((contentLen = uploadStream.Read(buffer, 0, bufferLen)) != 0)  
        {  
            fs.Write(buffer, 0, bufferLen);  
            fs.Flush();  
        }  
  
  
        //保存页面数据,上传的文件只保存路径  
        string productImage = "/Images/Upload/Product/" + fileName;  
        p.ProductImage = productImage;  
        p.ProductId = Guid.NewGuid().ToString();  
        p.CreationDate = DateTime.Now;  
  
        ShoppingDataContext dc = new ShoppingDataContext();  
        dc.Products.InsertOnSubmit(p);  
        dc.SubmitChanges();  
    }  
    catch (Exception ex)  
    {  
        ex.StackTrace.ToString();  
    }  
    finally {   
    if(null !=fs){  
        fs.Close();  
    }  
    if (null != uploadStream)  
    {  
        uploadStream.Close();  
    }  
    }  
  
    return RedirectToAction("../Category/ListProducts", new { cId=p.CId});  
}  
View Code

 

 3. 修改web.config 中对文件上传大小的限制

在 <system.web></system.web> 直接增加如下:

<httpRuntime maxRequestLength="999999" />  

 

 

 

 原文链接

转载于:https://www.cnblogs.com/GoCircle/p/6561228.html

相关文章:

  • Python自动化开发 - 进程、线程(一)
  • 利用input新类型,解决移动端原生实现日期时间联动问题,精确到分
  • mac ssh报错处理
  • 文本数据特征选取的四种方法
  • C#多线程编程之:lock使用注意事项
  • kmp模式串匹配
  • java 面向对象 — 多态
  • Java容器-引用分类与部分Map用法
  • 在Kotlin编写RecyclerView适配器(KAD 16)
  • web-app 与本地app的区别
  • JS 面向对象例题
  • Idea中的插件-列出Java Bean的所有set方法
  • JavaScript的数据类型与变量
  • Android 权限的实现
  • 看《神探夏洛克》经典台词
  • [数据结构]链表的实现在PHP中
  • CSS 提示工具(Tooltip)
  • ES6简单总结(搭配简单的讲解和小案例)
  • Just for fun——迅速写完快速排序
  • Material Design
  • mongodb--安装和初步使用教程
  • session共享问题解决方案
  • 翻译:Hystrix - How To Use
  • 力扣(LeetCode)965
  • 面试遇到的一些题
  • 浅谈web中前端模板引擎的使用
  • 使用Gradle第一次构建Java程序
  • 一道面试题引发的“血案”
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • PostgreSQL之连接数修改
  • !!java web学习笔记(一到五)
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragma 指令
  • (day6) 319. 灯泡开关
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (力扣)1314.矩阵区域和
  • (力扣)循环队列的实现与详解(C语言)
  • (四)Android布局类型(线性布局LinearLayout)
  • (一) springboot详细介绍
  • (转)Unity3DUnity3D在android下调试
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net MVC4 上传大文件,并保存表单
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET导入Excel数据
  • .NET文档生成工具ADB使用图文教程
  • /var/lib/dpkg/lock 锁定问题
  • @AliasFor注解
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @RequestBody与@ModelAttribute
  • [52PJ] Java面向对象笔记(转自52 1510988116)