Asp.Net MVC4系列---基礎篇(5)
Asynchronous File Upload in MVC
1. Script reference :
<script type="text/javascript" src="../MvcFileUploadDemo/Scripts/jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="../MvcFileUploadDemo/Scripts/handlebars.min.js"></script>
<script type="text/javascript" src="../MvcFileUploadDemo/Scripts/linq.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
add latest jquery .
handlebars : a jquery lib for easier js template handling
linq.js: a js lib make collections operation easier and better , just like c# linq.
jquery.form.js : a open source jquery lib , providing method do sync form post .
2.HTML :
@using (Ajax.BeginForm("Upload", "FileUploadDemo",
new AjaxOptions() { HttpMethod = "POST" }, new {id="frmUploadFile"}))
{
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="hidden" id="hdnCurrentPathUpload" value="@Model.CurrentPath" name="currentPath"/>
<input type="submit" value="Upload" id="btnUploadSubmit" />
}
<div class="progress">
<div class="bar"></div >
<div class="percent"></div >
</div>
<div id="status"></div>
3.Script :
(function () {
var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');
$('#frmUploadFile').ajaxForm({
beforeSend: function () {
status.empty();
var percentVal = '0%';
bar.width(percentVal);
percent.html(percentVal);
},
uploadProgress: function (event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal);
percent.html(percentVal);
},
success: function () {
var percentVal = '100%';
bar.width(percentVal);
percent.html(percentVal);
},
complete: function (xhr) {
// status.html(xhr.responseText);
}
});
})();
4.Controller
[HttpPost]
public ContentResult Upload()
{
var files = Request.Files;
if (files != null)
{
for (int i = 0; i < files.Count; i++)
{
var file = files[i];
if (file == null) continue;
var pic = "/"+ Path.GetFileName(file.FileName);
var path = CombinePath(
MapPath(Constant.BaseDir + Request.Form["currentPath"]), pic);
// file is uploaded
file.SaveAs(path);
}
}
return "uploaded successfully.";
}
相關文章
- Asp.Net MVC4 系列--基礎篇(1)ASP.NETMVC
- Asp.Net MVC4系列---基礎篇(4)ASP.NETMVC
- Asp.Net MVC 系列--基礎篇(2)ASP.NETMVC
- Asp.Net MVC系列--基礎篇(3)ASP.NETMVC
- Asp.Net MVC4系列--進階篇之AJAXASP.NETMVC
- Asp.Net MVC4 系列--進階篇之ViewASP.NETMVCView
- Asp.Net MVC4 系列--進階篇之Model(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Model(2)ASP.NETMVC
- Asp.Net MVC4 系列-- 進階篇之路由(1)ASP.NETMVC路由
- Asp.Net MVC4 系列--進階篇之路由 (2)ASP.NETMVC路由
- Asp.Net MVC4系列--進階篇之Helper(1)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Helper(2)ASP.NETMVC
- Asp.Net MVC4 系列--進階篇之Controller(2)ASP.NETMVCController
- vue系列基礎篇(一)Vue
- ArcGIS for iOS 開發系列(5) – 基礎篇-圖層-靜態圖層iOS
- 5、基礎篇-資源排程
- KeyShot基礎操作5 - 動畫篇動畫
- PHP DIY 系列------基礎篇:3. 反射PHP反射
- to debug asp.net mvc4ASP.NETMVC
- PHP DIY 系列------基礎篇:2. ComposerPHP
- PHP DIY 系列------基礎篇:1. PSRPHP
- WebSocket系列之基礎知識入門篇Web
- iOS動畫系列之四:基礎動畫之平移篇iOS動畫
- Webpack系列-第一篇基礎雜記Web
- .Net Core 微服務容器系列基礎目錄篇微服務
- Dagger 2 系列(二) -- 基礎篇:@Inject、@Component
- Dagger 2 系列(四) -- 基礎篇:@Named 和 @Qualifier
- 夯實Java基礎系列1:Java物件導向三大特性(基礎篇)Java物件
- 基礎篇
- ASP.NET MVC4 入門簡介ASP.NETMVC
- Asp.Net Core基礎篇之:白話管道中介軟體ASP.NET
- 【Kubernetes系列】第2篇 基礎概念介紹
- Dagger 2 系列(三) -- 基礎篇:@Module 和 @ProvidesIDE
- Flink系列(0)——準備篇(流處理基礎)
- 提升程式碼的可讀性系列(一)–基礎篇
- Android自定義控制元件系列之基礎篇Android控制元件
- 【基礎篇索引】索引基礎(四)索引
- 【基礎篇索引】索引基礎(三)索引