使用base64转码的方式上传图片
1.前端html代码
<input style="width:100%" onchange="loadpicture(1)" type="file" name="file" id="file➩1"> <img id="pic➩1" style="width:100%;height:120px" src="/Resource/Document/NetworkDisk/ProjectActivity/590600b4-f330-43c2-96fb-ea221f9e0ce2.jpg"> <input hidden="true" id="picsrc➩1" class="txt"> <input hidden="true" id="PictureUrl➩1" class="txt">
2.js代码,使用FileReader读取文件
function loadpicture(i) {
var obj = document.getElementById("file➩" + i);
var file = obj.files[0];
//alert(file);
//创建读取文件的对象
var reader = new FileReader();
//创建文件读取相关的变量
var imgFile;
//为文件读取成功设置事件
reader.onload = function (e) {
//alert('文件读取完成');
imgFile = e.target.result;
//console.log(imgFile);
$("#pic➩" + i).attr('src', imgFile);
$("#picsrc➩" + i).val(imgFile);
};
//正式读取文件
reader.readAsDataURL(file);
}
3.ajax传后台,此处有封装,用GetTableDataJson的方式获取了每一个file的ID
实际传输的话只需要传
$("#picsrc➩" + i).val()的值
//保存事件
function AcceptClick() {
if (!CheckDataValid('#form1')) {
return false;
} var ActivityForm = GetTableDataJson("#ActivityForm");
var ProblemForm = GetTableDataJson("#ProblemForm");
Loading(true, "正在提交数据...");
window.setTimeout(function () {
var postData = GetWebControls("#form1"); postData["ActivityForm"] = ActivityForm;
postData["ProblemForm"] = ProblemForm;
postData["BuildFormJson"] = JSON.stringify(GetWebControls("#CustomAttribute"));
AjaxJson("/ProjectManageModule/project/SubmitActivityForm?KeyValue=" + GetQuery('KeyValue'), postData, function (data) {
tipDialog(data.Message, 3, data.Code);
top.frames[tabiframeId()].windowload();
closeDialog();
});
}, 200);
}
4.后台c#代码,有可能会报GDI一般性错误的报错,
我这里是一开始目录没有对,所以报错,
realPath可以用
this.Server.MapPath(VirtualPath)的方式获取
由于我这边的文件存储目录和应用目录不在同一个盘符,所以使用了直接路径的写法
#region 图片处理,采用base64的方式转码解码
string virtualPath = "";
//图片上传
if (!string.IsNullOrEmpty(entityD.picsrc))
{
//删除老的图片
string FilePath = this.Server.MapPath(entityD.PictureUrl);
if (System.IO.File.Exists(FilePath))
System.IO.File.Delete(FilePath); string fileGuid = CommonHelper.GetGuid;
//long filesize = Filedata.ContentLength;
string FileEextension = ".jpg";
string uploadDate = DateTime.Now.ToString("yyyyMMdd");
//string UserId = ManageProvider.Provider.Current().UserId;
virtualPath = string.Format("~/Resource/Document/NetworkDisk/{0}/{1}{2}", "ProjectActivity", fileGuid, FileEextension); string realPath = string.Format(@"D:\LeaRun\Resource\Document\NetworkDisk\{0}\{1}{2}", "ProjectActivity", fileGuid, FileEextension); //string fullFileName = this.Server.MapPath(virtualPath);
////创建文件夹,保存文件
//realPath = Path.GetDirectoryName(fullFileName);
//先处理图片文件
string temp = entityD.picsrc.Substring();
byte[] arr2 = Convert.FromBase64String(entityD.picsrc.Substring());
using (MemoryStream ms2 = new MemoryStream(arr2))
{
System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);
bmp2.Save(realPath, System.Drawing.Imaging.ImageFormat.Jpeg);
bmp2.Dispose();
ms2.Close();
}
entityD.PictureUrl = virtualPath;
}
#endregion
使用base64转码的方式上传图片的更多相关文章
- 前端以BASE64码的形式上传图片
前端以BASE64码的形式上传图片 一直有一个很苦恼的问题困扰着铁柱兄,每次上传图片的时候前端要写一大堆js,然后后台也要写一堆java代码做处理.于是就在想,有没有简单又方便的方法把图片上传.今天算 ...
- 直接用<img> 的src属性显示base64转码后的字符串成图片
直接用<img> 的src属性显示base64转码后的字符串成图片 <img src="base64转码后的字符串" ></img> 下面的图片 ...
- javascript 使用btoa和atob来进行Base64转码和解码
javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用.当前html5标准正式化之际,Base64将有较大的转型空间,对于H ...
- Base64的编码转换方式
下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上 ...
- Eclipse Class Decompiler影响class默认打开方式,重新设置Eclipse默认源码打开方式
安装Eclipse Class Decompiler插件后,Eclipse中的默认源码打开方式被修改为Eclipse Class Decompiler 这不是我喜欢的,因为我希望,源码从网络中获取,当 ...
- 控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了
控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了,就是按钮上的或其他控件上的图片哪里去了?
- JS图片上传后base64转码
代码: // 获取文件流 var fileObj = document.getElementById('inputId').files; // 实例化一个FileReader对象 var reader ...
- Python Base64转码解码
Python Base64 提供了好几种方法例如: encode, decode, encodestring, decodestring, b64encode, b64decode, standard ...
- javascript Base64转码解码
javascript 使用btoa和atob来进行Base64转码和解码 $scope.checkAddCookie = function() { var expireDate = new Date( ...
随机推荐
- php5.4 trait 理解与学习
Trait 是 php5.4引入的新特性,手册上说的一大段没看懂,这里直接来过来. Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少单继承语言的限制,使开发人员 ...
- vsftp上传文件出现553 Could not create file
没有权限创建文件或是目录,原因是selinux引起的登陆问题. 通过如下命令查看状态: > sestatus -b|grep ftp 设置allow_ftpd_full_access为on. 在 ...
- css布局---各种居中
居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...
- vmware fusion 10序列号
vmware fusion pro 10序列号 亲测可用激活 FG3TU-DDX1M-084CY-MFYQX-QC0RD
- Linux sar
一.简介 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调 ...
- Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)
一.环境及准备工作 1.主机系统:本人系统是Windows10家庭中文版 2.虚拟机软件:VMware Workstation 14 Pro 虚拟机版本号:14.1.1 build-7528167 虚 ...
- hi~大家好,特地出来解释下最近为啥都不更新了!
总结一句话就是!因为我有宝宝啦~加上项目赶得不要不要的公司原因加上个人原因只能在家养胎啦,对象也是程序猿哦~不过是后端程序猿哈哈哈. 我打算开公众号(百撕可乐)啦,和博客圆的名字一样,毕竟用了这么多年 ...
- CSS 关键的基础知识
今晚看了 百度传课 一门关于CSS的课程, 感觉不错, 随手记了点儿笔记, 供以后查阅. =================================================== pos ...
- 2018.09.28 bzoj1563: [NOI2009]诗人小G(决策单调性优化dp)
传送门 决策单调性优化dp板子题. 感觉队列的写法比栈好写. 所谓决策单调性优化就是每次状态转移的决策都是在向前单调递增的. 所以我们用一个记录三元组(l,r,id)(l,r,id)(l,r,id)的 ...
- 2018.09.27 bzoj2118: 墨墨的等式(最短路+背包)
传送门 好题啊. 首先找到最小的一个非零系数记做a1a_1a1,然后如果WWW modmodmod a1=W′a_1=W'a1=W′ modmodmod a1a_1a1,且WWW是方程的一个可行 ...