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的原生操作图片预览和上传的更多相关文章

  1. 【javascrpt】——图片预览和上传,兼容IE 9-

    下载DEMO:https://github.com/CaptainLiao/zujian/tree/master/Upload 对于现代浏览器来说,要实现图片预览非常简单: 1.fileReader. ...

  2. jQuery+Ajax实现图片的预览和上传

    jQuery+Ajax实现图片的预览和上传 1.配置Spring-web.xml <!-- springmvc上传图片 --> <bean id="multipartRes ...

  3. 【项目相关】MVC中使用WebUploader进行图片预览上传以及编辑

    项目中需要用到多图片上传功能,于是在百度搜了一下,首先使用了kissy uploader,是由阿里前端工程师们发起创建的一个开源 JS 框架中的一个上传组件...但,后面问题出现了. 在对添加的信息进 ...

  4. 对百度WebUploader的二次封装,精简前端代码之图片预览上传(两句代码搞定上传)

    前言 本篇文章上一篇: 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传) 此篇是在上面的基础上扩展出来专门上传图片的控件封装. 首先我们看看效果: 正文 使用方式同 ...

  5. H5实现多图片预览上传,可点击可拖拽控件介绍

    版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...

  6. jquery.uploadView 实现图片预览上传

    图片上传,网上有好多版本,今天也要做一个查了好多最终找到了一个uploadview 进行了一下修改 来看代码 @{ Layout = null; } <!DOCTYPE html> < ...

  7. js获取base64格式图片预览上传并用php保存到本地服务器指定文件夹

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. 原生js实现图片预览并上传

    最近主导的PC客户端网站重构工程告一段落,下一阶段开始给公司APP开发H5页面,技术栈是react.最近碰到一个需求:需要在H5页面上添加身份证照片,预览并上传.因为要兼容安卓4.4以下版本的手机,所 ...

  9. 浅谈简单实现file控件的图片预览,裁剪和上传。

    1.图片预览之FileReader对象    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...

随机推荐

  1. java基础(10):继承、抽象类

    1. 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系.例如公司中的研发部员工和维护部员工 ...

  2. LinkedHashMap,源码解读就是这么简单

    概述 LinkedHashMap是HashMap的子类,它的大部分实现与HashMap相同,两者最大的区别在于,HashMap的对哈希表进行迭代时是无序的,而LinkedHashMap对哈希表迭代是有 ...

  3. JMeter处理form-data类型的接口

    最近的需求中,有的接口入参是form-data类型的,除了用python多进程代码进行压测,考虑用Jmeter试试看,比对一下结果. 线程数设置的是50,循环次数为100,一共发送5000次请求. H ...

  4. linux下 sort | uniq | wc | less 几个命令的基本用法

    sort -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使用『纯数字』进行 ...

  5. python3 FastDFS 配置文件 客户端连接 删除文件 bug

    文件传输使用FastDFS 很方便, 不管是大小文件, 用默认的配置就可以, 这里插入一个配置文件 :  (后补python连接FastDFS上传下载文件) # connect timeout in ...

  6. FastJSON使用例子

    FastjsonTest.java package demo; import java.util.ArrayList; import java.util.Date; import java.util. ...

  7. Bitbucket与git上传源码的使用方法

    本文链接:https://blog.csdn.net/nomisshe/article/details/19625555 Bitbucket使用方法   一.软件及SSH keys: 由于我的Bitb ...

  8. Python—函数基础篇

    https://www.cnblogs.com/littlefivebolg/p/9017449.html Python 解释器的内置函数 内置函数 作用 实例 abs() 返回数字的绝对值. abs ...

  9. Linux 解决Deepin深度系统无法在root用户启动Google Chrome浏览器的问题

    解决Deepin无法在root用户启动Google Chrome浏览器的问题,步骤如下. 前提:如何用root用户登录系统?编辑 vim /etc/lightdm/lightdm.conf , 找到并 ...

  10. [视频教程] 配置mysql用户的权限并查询数据

    MySQL安装后,需要允许外部IP访问数据库.修改加密配置与增加新用户,配置用户权限修改配置文件,增加默认加密方式的配置项. 当连接数据库的时候会报验证方法不存在的错误,这是因为新版本mysql的加密 ...