MVC 图片上传小试笔记

form.js 这个插件已经是很有名的,结合MVC的html辅助方法异步上传就很简单了。jQuery Form Plugin :http://www.malsup.com/jquery/form/#file-upload

1.引入js,构建form。本身的BeginForm已经能够提交,但是如果有返回值的话,页面会跳转,这样体验就很不好。网上有说把反馈结果写在ViewData中,来绕开return。其实这是浏览器的默认行为,用form.js可以阻止掉。

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", name = "Form1", id = "Form1" }))
{
if (ViewData["ck"]!=null&&ViewData["ck"].ToString() != "")
{
<span id="ss">@ViewData["ck"].ToString()</span>
}
<input type="file" name="file" required="required" />
<input type="submit" name="subt" value="Upload File"/>
} <div class="progress">
<div class="bar"></div>
<div class="percent">0%</div>
</div>
<div id="status"></div>

2.进度条与反馈结果

在表单插件的demo中已经有很好的例子,包括同时上传多个图片: http://www.malsup.com/jquery/form/progress.html

在ajaxform中完全可以控制整个上传到的节奏。

<script>(function () {
var bar = $(''.bar'');
var percent = $(''.percent'');
var status = $(''#status'');
$(''#Form1'').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); }
});
})();</script>

3.转移图片。

文件保存的就不说了,和上篇没什么差别。用户第一次上传是传的tempfile中,确定之后再移到个人文件夹下。

第一次从MoveTo的时候,以为只要写好目的文件夹名称就可以,但一直报错为找到部分目录,一直奇怪,原来需要加上你传递文件的名称和扩展名。才能移动。

所以就再取了个名字。

  var scr = Server.MapPath("../Content/TempFile/62231101jw1e3t0apspuoj.jpg");//仅仅是为了测试
var imgname =string.Format("{0:yyyMMdd}",DateTime.Now).Replace("/","")+ DateTime.Now.Ticks.ToString(CultureInfo.InvariantCulture).Substring(7,11)+".jpg";
var scrdestination = Path.Combine(HttpContext.Server.MapPath("../Content/UploadFiles/"), imgname);
FileInfo img=new FileInfo(scr);
if (img.Exists)
{
img.MoveTo(scrdestination);
}

MVC 图片上传 带进度条(转)的更多相关文章

  1. bootstarp 多图片上传 带进度条

    前台代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...

  2. 一般处理程序、Ajax多图片上传带进度条

    <!DOCTYPE html><html><head>    <meta charset="utf-8" />    <tit ...

  3. atitit. 文件上传带进度条 atiUP 设计 java c# php

    atitit. 文件上传带进度条 atiUP 设计 java c# php 1. 设计要求 1 2. 原理and 架构 1 3. ui 2 4. spring mvc 2 5. springMVC.x ...

  4. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

  5. HTML5多图片拖拽上传带进度条

    前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...

  6. html5 文件上传 带进度条

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. Struts2文件上传带进度条,虽然不是很完美

    好久没有写东西,最近在做个项目,要用到文件h 传的,以前虽然也做上传,但是总觉得不好用 ,现在和队友合作做了一个带进度条的上传,觉得还行~~和大家分享一下. 首先说一下大概是这样实现的,在我们平时的上 ...

  8. jQuery.uploadify-----文件上传带进度条,支持多文件上传的插件

    借鉴别人总结的uploadify:基于jquery的文件上传插件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,控制文件上传大小,删除已上传文件. uploadify有两个版本,一个用f ...

  9. Flex4/Flash多文件上传(带进度条)实例分享

    要求 必备知识 本文要求基本了解 Adobe Flex编程知识和JAVA基础知识. 开发环境 MyEclipse10/Flash Builder4.6/Flash Player11及以上 演示地址 演 ...

随机推荐

  1. Vue 安装脚手架 工具 vue-cli (最新)

    假如您安装过旧版脚手架工具(vue-cli),您可以通过 npm uninstall vue-cli -g 或 yarn global remove vue-cli卸载. Vue CLI 需要Node ...

  2. c# 多个事件公用一个相应方法判断事件来源

    假设下边的相应方法有多个事件共同使用.根据事件的sender 判断来源,做相应的处理 假设事件来源DataManSystem;private void OnSystemConnected(object ...

  3. c++ opencv 3.2 +Mfc VS2015窗体显示图片方法

    本文仅涉及一些核心步骤,具体 OpenCV 的配置以及其他的细节问题,请参考 VS2010 / MFC + OpenCV 2.4.1打开图片. 1. 新建 MFC 对话框项目 基于对话框,不使用Uni ...

  4. N! (数组)

    #include <iostream> using namespace std; ; int f[MAXN]; int main(){ int n; cin >> n; f[] ...

  5. NGS基础 - 高通量测序原理

    NGS基础 - 高通量测序原理 原创: 赑屃 生信宝典 2017-07-23 NGS系列文章包括NGS基础.转录组分析.ChIP-seq分析.DNA甲基化分析.重测序分析五部分内容. NGS基础系列文 ...

  6. idea 高级调试技巧

    两年前写过一篇关于idea的高级用法,今天再来一篇关于调试方面的技巧讲解: 一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右 ...

  7. Luogu 2279 [HNOI2003]消防局的设立 - 贪心

    Description 给定一棵树形图, 建若干个消防站, 消防站能够覆盖到距离不超过2的点, 求最少需要建几个消防站才能覆盖所有点 Solution 从深度最深的点开始, 在它的爷爷节点上建, 每建 ...

  8. Centos Raid0 与Raid1 的备注

    http://www.360doc.com/content/13/1209/21/14661619_335823338.shtml raid0 如果坏了一块硬盘.那么数据就无法读取了 raid1 如果 ...

  9. Properties of a scheduled job in Laravel

    Every entry you add is converted into an instance of Illuminate\Console\Scheduling\Event and stored ...

  10. Spring ApplicationContext(十)finishRefresh

    ApplicationContext(十)finishRefresh Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 经过 ...