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转码的方式上传图片的更多相关文章

  1. 前端以BASE64码的形式上传图片

    前端以BASE64码的形式上传图片 一直有一个很苦恼的问题困扰着铁柱兄,每次上传图片的时候前端要写一大堆js,然后后台也要写一堆java代码做处理.于是就在想,有没有简单又方便的方法把图片上传.今天算 ...

  2. 直接用<img> 的src属性显示base64转码后的字符串成图片

    直接用<img> 的src属性显示base64转码后的字符串成图片 <img src="base64转码后的字符串" ></img> 下面的图片 ...

  3. javascript 使用btoa和atob来进行Base64转码和解码

    javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用.当前html5标准正式化之际,Base64将有较大的转型空间,对于H ...

  4. Base64的编码转换方式

    下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上 ...

  5. Eclipse Class Decompiler影响class默认打开方式,重新设置Eclipse默认源码打开方式

    安装Eclipse Class Decompiler插件后,Eclipse中的默认源码打开方式被修改为Eclipse Class Decompiler 这不是我喜欢的,因为我希望,源码从网络中获取,当 ...

  6. 控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了

    控件真的很好用,突然感觉自己以前研究Discuz!NT366源码的方式很2了,就是按钮上的或其他控件上的图片哪里去了?

  7. JS图片上传后base64转码

    代码: // 获取文件流 var fileObj = document.getElementById('inputId').files; // 实例化一个FileReader对象 var reader ...

  8. Python Base64转码解码

    Python Base64 提供了好几种方法例如: encode, decode, encodestring, decodestring, b64encode, b64decode, standard ...

  9. javascript Base64转码解码

    javascript 使用btoa和atob来进行Base64转码和解码 $scope.checkAddCookie = function() { var expireDate = new Date( ...

随机推荐

  1. np.random.seed()

    124.np.random.seed()的作用 陈容喜 关注 2018.01.11 21:36 字数 3 阅读 4460评论 0喜欢 6 今天看到一段代码时遇到了np.random.seed(),搞不 ...

  2. 120. Triangle(Array; DP)

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  3. 数据库事务(Database Transaction)

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务由事务开始(begin transaction)和事务结束(commit transaction或 ...

  4. Codeforces Beta Round #14 (Div. 2)

    Codeforces Beta Round #14 (Div. 2) http://codeforces.com/contest/14 A 找最大最小的行列值即可 #include<bits/s ...

  5. xcode - 显示安装过的低版本模拟器

    1. 更改版本

  6. 关于swift语言中导入OC三方类找不到头文件的解决方法

    首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...

  7. php下ajax的文件切割上传

    html5中的File对象继承Blob二进制对象,Blob提供了一个slice函数,可以用来切割文件数据. <!DOCTYPE HTML> <html lang="zh-C ...

  8. DB2与oracle类型对比

    本文摘自http://www.cnblogs.com/cy163/archive/2010/11/17/1880280.html 做过DB2数据库应用迁移的工程师,了解IBM MTK工具在迁移过程中所 ...

  9. [Sikuli] Sikuli安装

    http://blog.csdn.net/defectfinder/article/details/49819215 1.下载 sikulixsetup-1.1.0.jar (md5, sig) ht ...

  10. springmvc 整合shiro

    1.引用maven <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro ...