表单提交学习笔记(三)—利用Request.Files上传图片并预览
一、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上传图片并预览的更多相关文章
- 表单提交学习笔记(二)—使用jquery.validate.js进行表单验证
一.官网下载地址:http://plugins.jquery.com/validate/ 二.用法 1.在页面上进行引用 <script src="~/scripts/jquery-1 ...
- 表单提交学习笔记(一)—利用jquery.form提交表单(后台.net MVC)
起因:一开始想用MVC本身的Form提交方法,但是提交完之后想进行一些提示,MVC就稍显不足了,最后用jquery插件---jquery.form.js,完美解决了问题~~ 使用方法 一.下载jque ...
- hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...
- 在表单提交之前做校验-利用jQuery的submit方法
点击表单中的提交按钮,默认就会提交表单,如果要在表单提交之前做一些校验,那么就可以用jQuery的submit方法. 也就是jQuery的submit的方法执行顺序,在表单的提交之前.用法如下: $( ...
- HTML表单部分学习笔记
第一部分: <!-- action :指定处理提交表单的格式 method :指定提交表单的http方法 enctype:指明用来把表单提交给服务器时的互联网媒体形式 --> <fo ...
- php Socket表单提交学习一下
<?php //发送请求指定的页面 $file = "1.php"; $filename = "gitignore.txt"; //文件名 $path = ...
- (转)ASP.NET MVC 第五个预览版和表单提交场景
转自:http://ourlife.blog.51cto.com/708821/296171 上个星期四,ASP.NET MVC开发团队发布了ASP.NET MVC框架的“第五个预览版”.你可以在这里 ...
- Struts2_day02--Action获取表单提交数据
Action获取表单提交数据 1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap 2 ...
- 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.代码 ...
随机推荐
- win10 关闭开机密码
在运行对话框里输入:netplwiz 控制面板(control)>电源选项>更改计算机休眠时间-选为 从不
- 简单find命令的实现
贴代码: /*实现一个简单的find命令:*//*程序思路:首先,用一个单链表将所需要的信息存储起来:其次根据所传入的参数信息,改变节点的状态(若有这个状态,证明该节点就是我们所需要的)最后将所需要的 ...
- 迁移学习、fine-tune和局部参数恢复
参考:迁移学习——Fine-tune 一.迁移学习 就是把已训练好的模型参数迁移到新的模型来帮助新模型训练. 模型的训练与预测: 深度学习的模型可以划分为 训练 和 预测 两个阶段. 训练 分为两种策 ...
- [技术博客] 数据库1+N查询问题
目录 问题简述 问题解决 group的方法简化查询 改正后的代码 作者:庄廓然 问题简述 本次开发过程中我们用到了rails的orm框架,使用orm框架可以很方便地进行对象的关联和查询,例如查询一个用 ...
- 【转】Linux下的CPU使用率与服务器负载的关系与区别
当我们使用top命令查看系统的资源使用情况时会看到load average,如下图所示,它表示系统在1,5,15分钟的平均工作负载. 那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢? ...
- SLF4J使用,slf4j-api、slf4j-log4j12以及log4j的关系
SLF4J不同于其他日志类库,与其它有很大的不同.SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer ...
- Java编程思想之四控制执行流程
程序必须再执行过程中控制它的世界,并做出选择.在Java中,你要使用执行控制语句来做出选择. 4.1true和false 所有条件语句都利用条件表达式的真或假来决定执行路径. Java不允许使用数字作 ...
- Cesium 1.54评测 【转】
重要功能评测 3dtiles数据上画线和贴纹理 3dtiles数据上画线和贴纹理 把线条贴到3dtiles上需要用到两个属性:clampToGround和classificationType. c ...
- [zhuan]SQLSERVER 数据库性能的基本
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
- 移动端Web框架
[参考]移动端 UI设计尺寸(一)篇 [参考]移动端界面设计之尺寸篇 [参考]介绍几个移动web app开发框架 [参考]移动webapp前端ui用哪个框架好 H5 做移动开发也分两种,一种就是正常的 ...