【转】 .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>
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 = ;
- byte[] buffer = new byte[bufferLen];
- int contentLen = ;
- 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, , bufferLen)) != )
- {
- fs.Write(buffer, , 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});
- }
3. 修改web.config 中对文件上传大小的限制
在 <system.web></system.web> 直接增加如下:
【转】 .Net MVC4 上传大文件,并保存表单的更多相关文章
- .Net MVC4 上传大文件,并保存表单
1. 前台 cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Pr ...
- [Asp.net]Uploadify上传大文件,Http error 404 解决方案
引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章:[Asp.net]Upl ...
- php 上传大文件配置upload_max_filesize和post_max_size选项
php 上传大文件配置upload_max_filesize和post_max_size选项 (2014-04-29 14:42:11) 转载▼ 标签: php.ini upload _files[f ...
- PHP上传大文件 分割文件上传
最近遇到这么个情况,需要将一些大的文件上传到服务器,我现在拥有的权限是只能在一个网页版的文件管理系统来进行操作,可以解压,可以压缩,当然也可以用它来在线编辑.php文件. 文件有40M左右,但是服务器 ...
- ASP.NET上传大文件的问题
原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...
- php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
php 上传大文件主要涉及配置 upload_max_filesize 和post_max_size两个选项 今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了 ...
- SWFUpload上传大文件(暂时用用,真正用的时候还是要改的)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PHP上传大文件和处理大数据
1. 上传大文件 /* 以1.5M/秒的速度写入文件,防止一次过写入文件过大导致服务器出错(chy/20150327) */ $is_large_file = false; if( strlen($x ...
- QQ上传大文件为什么这么快
今天和同事在群里讨论“QQ上传大文件/QQ群发送大文件时,可以在极短的时间内完成”是如何做到的. 有时候我们通过QQ上传一个几百M的文件,竟然只用了几秒钟,从带宽上限制可以得出,实际上传文件是不可能的 ...
随机推荐
- delphi读取xml文件
功能: 根据省份更新地市信息 -------------------------------------------------------------------------------} proc ...
- 黄聪:TortoiseGit(乌龟git)保存用户名密码的方法
1.在项目文件夹右键--tortoiseGit--设置 2.编辑全局.git/config 3.加上这行代码 里面会有你先前配好的name 和email,只需在下面加一行 [credential] h ...
- RTB业务知识之1-原生广告
一.背景 Native Advertising (Native Ads), 又称为原生广告, 是2013全球媒体界爆红的关键词,从2012年年底,就有人开始提了这个名词,接着到处都可以看到这个名词,再 ...
- BlueZone automation note1
To run the patch test cases in C:\sliData\TAF\bzw\test-packs\run_jobs via run_example_tests_smoke_te ...
- 自动化测试Java一:Selenium入门
From: https://blog.csdn.net/u013258415/article/details/77750214 Selenium入门 欢迎阅读Selenium入门讲义,本讲义将会重点介 ...
- 将Json对象数组转化成JS Array数组
private format(cards:any):Array<any>{ var result = new Array(); cards.forEach(element => { ...
- java高并发编程(四)高并发的一些容器
摘抄自马士兵java并发视频课程: 一.需求背景: 有N张火车票,每张票都有一个编号,同时有10个窗口对外售票, 请写一个模拟程序. 分析下面的程序可能会产生哪些问题?重复销售?超量销售? /** * ...
- springboot(二 如何访问静态资源和使用模板引擎,以及 全局异常捕获)
在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则: /static / ...
- 问题 B: 【例9.3】求最长不下降序列(基础dp)
问题 B: [例9.3]求最长不下降序列 时间限制: 1 Sec 内存限制: 128 MB提交: 318 解决: 118[提交][状态][讨论版][命题人:quanxing] 题目描述 设有由n( ...
- mysql root情况
180829 11:15:20 [ERROR] Fatal error: Please read "Security" section of the manual to ...