一、html页面如下

 <div id="container">
<form id="myForm">
<p class="img_P"><img id="previewPic" name="previewPic" /></p>
<p><input type="file" id="imgUpload" name="imgUpload" /></p>
<p><button id="submitBtn" type="button" value="提交">提交</button></p>
</form>
</div>

二、实现上传图片预览功能

     $(function () {
$('#imgUpload').on('change', function () {
var file = this.files[0];
if(this.files&&file)
{
var reader = new FileReader();
reader.onload = function (e) {
$('#previewPic').attr('src', e.target.result);
}
reader.readAsDataURL(file);
}
})
})

三、将图片传到后台(图片存储到固定文件夹下)

view页面的代码如下(页面需引用jquery和jquery.form.js两个文件):

         $('#submitBtn').on('click', function () {
$('#myForm').ajaxSubmit({
type: 'post',
url: '/Form/ImgSubmit',
success: function (data) {
}
})
})

Controller代码

         [HttpPost]
public ActionResult ImgSubmit()
{
if (Request.Files.Count>)
{
string extension = string.Empty;
HttpPostedFileBase file = Request.Files[] as HttpPostedFileBase;
if (file.FileName.Length > )
{
if (file.FileName.IndexOf('.') > -)
{
//原来也可以这用获取扩展名
//extension = file.FileName.Remove(0, file.FileName.LastIndexOf('.'));
string filePath = "/Upload/";
//创建路径
CreateFilePath(filePath);
if (file.FileName.ToString() != "")
{
string absoluteSavePath = System.Web.HttpContext.Current.Server.MapPath("~" + filePath);
var pathLast = Path.Combine(absoluteSavePath, file.FileName);
file.SaveAs(pathLast);
}
}
}
}
return Content("success");
} /// <summary>
/// 当存储的文件路径不存在时,创建文件路径
/// </summary>
/// <param name="savePath">保存路径(非绝对路径)</param>
public static void CreateFilePath(string savePath)
{
string Absolute_savePath = System.Web.HttpContext.Current.Server.MapPath("~" + savePath);
if (!Directory.Exists(Absolute_savePath))
Directory.CreateDirectory(Absolute_savePath);
}

注:在做的过程中,遇到了上传了图片,但是后台总是接收不到(Request.Files.Count总是为0),原因可能如下:

1、<form> 不能被嵌套(一个页面可以有多个form,但是不能被嵌套)

2、<form method="post" ,enctype="multipart/form-data" ></form>

3、<input type="file" id="imgUpload" name="imgUpload" /> 一定要有name属性

表单提交学习笔记(三)—利用Request.Files上传图片并预览的更多相关文章

  1. 表单提交学习笔记(二)—使用jquery.validate.js进行表单验证

    一.官网下载地址:http://plugins.jquery.com/validate/ 二.用法 1.在页面上进行引用 <script src="~/scripts/jquery-1 ...

  2. 表单提交学习笔记(一)—利用jquery.form提交表单(后台.net MVC)

    起因:一开始想用MVC本身的Form提交方法,但是提交完之后想进行一些提示,MVC就稍显不足了,最后用jquery插件---jquery.form.js,完美解决了问题~~ 使用方法 一.下载jque ...

  3. hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images

    hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...

  4. 在表单提交之前做校验-利用jQuery的submit方法

    点击表单中的提交按钮,默认就会提交表单,如果要在表单提交之前做一些校验,那么就可以用jQuery的submit方法. 也就是jQuery的submit的方法执行顺序,在表单的提交之前.用法如下: $( ...

  5. HTML表单部分学习笔记

    第一部分: <!-- action :指定处理提交表单的格式 method :指定提交表单的http方法 enctype:指明用来把表单提交给服务器时的互联网媒体形式 --> <fo ...

  6. php Socket表单提交学习一下

    <?php //发送请求指定的页面 $file = "1.php"; $filename = "gitignore.txt"; //文件名 $path = ...

  7. (转)ASP.NET MVC 第五个预览版和表单提交场景

    转自:http://ourlife.blog.51cto.com/708821/296171 上个星期四,ASP.NET MVC开发团队发布了ASP.NET MVC框架的“第五个预览版”.你可以在这里 ...

  8. Struts2_day02--Action获取表单提交数据

    Action获取表单提交数据 1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap 2 ...

  9. Servlet实现表单提交(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(一)

    1.MyEclipse|File|New|Project|Web Project    填写Project Name:exServlet,点选Java EE 6.0(配套Tomcat7.0) 2.代码 ...

随机推荐

  1. [技术博客] rails控制台调试路由

    目录 rails console 获得路由 app.xxx_path 发送请求 获得响应 作者:庄廓然 rails console 在项目目录下执行rails console test 可以进入测试模 ...

  2. JavaScript初探系列(五)——this指向

    一.涵义 this关键字是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成.this可以用在构造函数之中,表示实例对象.除此之外,this还可以用在别的场合.但不管是什么场 ...

  3. js - 常用工具集功能函数

    Note [普通JSON数组插入指定位置并且合并] let arr = [{ a: 11 }, { a: 11 }, { a: 11 }, { a: 117 }, { a: 11 }, { a: 11 ...

  4. Alpine容器中运行go的二进制文件

    Alpine容器中运行go的二进制文件 kuSorZ · 3月之前 · 214 次点击 · 预计阅读时间 1 分钟 · 2分钟之前 开始浏览 原文出处:https://cloud.tencent.co ...

  5. coroutine闲谈

    coroutine居然能被吹到这种地步

  6. linux系统错误码大全

    #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #defi ...

  7. docker 运行 sqlserver

    docker 运行 sqlserver docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=sa123456' -e 'MSSQL_PID=Deve ...

  8. 第一本docker书 学习笔记(一)

    Docker的核心组件: Docker客户端和服务端 Docker镜像 Registry Docker容器 # Docker客户端和服务端 docker 是一个 C/S架构程序.客户端只需要向dock ...

  9. 《设计模式》读懂UML类图

    一.类中的主要关系 继承.实现.组合.聚合.依赖.关联 二.UML类图 三.代码实现 public class H2O { } public class O2 { } public interface ...

  10. hive 引入第三方包(不重启)

    Jar放入${HIVE_HOME}/auxlib目录 在${HIVE_HOME}中创建文件夹auxlib,然后将自定义jar文件放入该文件夹中. 此方法添加不需要重启Hive.而且比较便捷. 连接方式 ...