webform的原生操作图片预览和上传
1.使用input标签进行图片操作,input的标签有一个accept属性,accept 属性只能与 <input type="file"> 配合使用。它规定能够通过文件上传进行提交的文件类型,多个属性值使用逗号分隔<input accept="audio/*,video/*,image/*">。
如果想使用浏览器原生特性实现文件上传(如图片)效果,父级的form元素有个东西不能丢,就是:enctype="multipart/form-data" enctype属性规定在发送到服务器之前应该如何对表单数据进行编码,默认的编码是:”application/x-www-form-urlencoded“。对于普通数据是挺适用的,但是,对于文件什么的,就不能乱编码了,该什么就是什么,只能使用multipart/form-data作为enctype属性值。
html代码:
<div class="detail-item">
<form action="" enctype="multipart/form-data" id="formData2">
<span class="item-tit" style="margin-top: 22px;">头像</span>
<ul class="clearfix list-unstyled pic-list">
<li>
<img id="imgName" ms-attr-src="UserData.Files" style="width: 120px; height: 150px; border-radius: 3px;">
</li>
<li>
<span class="info"><input id="file" class="filepath" onchange="changepic(this)" type="file" accept="image/*" /></span>
<span class="info"><input type="button" id="uploadbt" ms-click="UploadImage()" style="background-image:url(/ViewV5/JS/jquery.uploadify-v2.1.0/kssc.png); width:75px; height:28px; border:0px; cursor:pointer" /></span> <input type="hidden" id="imgPath" ms-duplex="UserData.Files"/>
</li>
</ul>
</form>
</div>
2.图片预览
就是替换img的src;而读取URL有filereader 和 URL.createObjectURL 两种预览方式。这两种方式可以获得上传图片的名字(name)
//图片预览
function changepic() {
//var reads = new FileReader();
//var f = document.getElementById('file').files[0];
//reads.readAsDataURL(f);
//reads.οnlοad = function(e) {
// document.getElementById('imgName').src = this.result;
//};
var newsrc = getObjectURL(document.getElementById('file').files[0]);
document.getElementById('imgName').src = newsrc;
}
//建立一個可存取到該file的url
function getObjectURL(file) {
var url = null ;
// 下面函数执行的效果是一样的,只是需要针对不同的浏览器执行不同的 js 函数而已
if (window.createObjectURL!=undefined) { // basic
url = window.createObjectURL(file) ;
} else if (window.URL!=undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file) ;
} else if (window.webkitURL!=undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file) ;
}
return url ;
}
3.图片上传
前端js:
UploadImage: function (e) {
var ofile = $("#file").get(0).files[0];
var formData = new FormData();
if (!ofile) {
alert('请上传文件');
return;
}
var size = ofile.size / 1024 / 1024;
if (size > 1) {
alert('文件不能大于1M');
return;
}
formData.append("file", ofile);//这个是文件,这里只是演示上传了一个文件,如果要上传多个的话将[0]去掉
formData.append("F_ID", $("#F_ID").val());//这个是上传的其他参数
$.ajax({
url: '/ViewV5/Base/UploadTX.ashx',
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (msg) {
if (msg) {
var obj = JSON.parse(msg);
if (obj.success) {
$("#imgPath").val(obj.sourceUrl);
}
top.ComFunJS.winsuccess("操作成功");
}
},
error: function (msg) {
console.log(msg);
}
});
}
后端:上传到网站根目录下,并返回相对路径需要提交表单的时候保存到数据库。
HttpFileCollection files = HttpContext.Current.Request.Files;
if (files.Count>)
{
UpSaveImg(context,files[]);
}
/// <summary>
/// 新的上传方法
/// </summary>
/// <param name="file"></param>
public void UpSaveImg(HttpContext context,HttpPostedFile file)
{
try
{
if (file.ContentLength > * )
{
context.Response.Write("{\"statusCode\":\"300\", \"message\":\"文件过大,限制1M以内!\"}");
return;
}
Result result = new Result();
result.success = false;
result.msg = "Failure!";
string tx_path = HttpContext.Current.Server.MapPath(UploadFile);//获取文件上传路径
TXFileHelper.CreateDir(tx_path);
string fileName = DateTime.Now.ToString("yyyyMMddhhmmssff") + CreateRandomCode();
file.SaveAs(tx_path + fileName + ".jpg");
result.success = true;
result.msg = "sucess";
result.sourceUrl = tx_path + fileName + ".jpg";
result.sourceUrl = @"\images" + Regex.Split(result.sourceUrl, "images", RegexOptions.IgnoreCase)[] ;//图片的相对路径
//返回图片的保存结果(返回内容为json字符串,可自行构造,该处使用Newtonsoft.Json构造)
context.Response.Write(JsonConvert.SerializeObject(result));
}
catch (Exception ex)
{
context.Response.Write(ex.Message.ToString() + ex.StackTrace);
}

webform的原生操作图片预览和上传的更多相关文章
- 【javascrpt】——图片预览和上传,兼容IE 9-
下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload 对于现代浏览器来说,要实现图片预览非常简单: 1.fileReader. ...
- jQuery+Ajax实现图片的预览和上传
jQuery+Ajax实现图片的预览和上传 1.配置Spring-web.xml <!-- springmvc上传图片 --> <bean id="multipartRes ...
- 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑
项目中需要用到多图片上传功能,于是在百度搜了一下,首先使用了kissy uploader,是由阿里前端工程师们发起创建的一个开源 JS 框架中的一个上传组件...但,后面问题出现了. 在对添加的信息进 ...
- 对百度WebUploader的二次封装,精简前端代码之图片预览上传(两句代码搞定上传)
前言 本篇文章上一篇: 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传) 此篇是在上面的基础上扩展出来专门上传图片的控件封装. 首先我们看看效果: 正文 使用方式同 ...
- H5实现多图片预览上传,可点击可拖拽控件介绍
版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...
- jquery.uploadView 实现图片预览上传
图片上传,网上有好多版本,今天也要做一个查了好多最终找到了一个uploadview 进行了一下修改 来看代码 @{ Layout = null; } <!DOCTYPE html> < ...
- js获取base64格式图片预览上传并用php保存到本地服务器指定文件夹
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 原生js实现图片预览并上传
最近主导的PC客户端网站重构工程告一段落,下一阶段开始给公司APP开发H5页面,技术栈是react.最近碰到一个需求:需要在H5页面上添加身份证照片,预览并上传.因为要兼容安卓4.4以下版本的手机,所 ...
- 浅谈简单实现file控件的图片预览,裁剪和上传。
1.图片预览之FileReader对象 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...
随机推荐
- centos 7 搭建Samba
一.Samba简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,由客户端和服务端构成. SMB(Server Message Block的缩写,即服务器消息块)主要是作 ...
- Java生鲜电商平台-电商订单系统全解析
Java生鲜电商平台-电商订单系统全解析 说明:Java生鲜电商平台-电商订单系统全解析主要讲解OMS的内容,设计,开发,架构等知识. 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订 ...
- java主函数
相信很多初次接触java的同学,在遇见主函数的时候,听到最多的就是主函数的格式是固定的,不能进行修改等等.这就让人疑惑了,主函数为啥就那么特殊呢?接下来博主会为大家解释主函数.大家先看看下面这个程序: ...
- Java关键字之abstract、final、static用法
abstract:即抽象的,可以修饰类.方法: 修饰类:当有一个方法为抽象方法时,这个类就是抽象类,抽象类不能被new,它是一个不完整的类. 修饰方法:这个方法就是抽象的,即只能方法的定义,没有方法的 ...
- ES6变量的解构赋值(二)对象的解构赋值
前面我们知道,数组的结构赋值需要按顺序进行赋值, let [a,,c] = [,,] console.log(a); console.log(c);//3 let [a,b] = [1];consol ...
- 按需动态加载js
有些时间我们希望能按需动态加载js文件,而不是直接在HTML中写script标签. 以下为示例代码: var js = document.createElement('script'); js.asy ...
- Flutter学习笔记(1)--环境安装
flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...
- Flask—好的博客
https://www.cnblogs.com/cwp-bg/p/8892403.html https://www.cnblogs.com/ExMan/p/9825710.html https://w ...
- k8s中的client-go编译成功
要分版本的,好像1.4跟12差别好大. 1.4中用的模块管理还是vendor,12就换成mod了. 这个要记住差异. 一,从github上下载client-go的1.4版本 https://githu ...
- Java中Class和单例类的作用与类成员的理解
Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...