图片上传/修改的总结

Jron. 2020-08-09 08:38:36
图片上传/修改的总结
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
图片上传
1. 图片上传,其实本质上就是(文件)上传;
2. 图片上传到数据库的时候,通常不是把图片直接保存到数据库,而是把图片的路径或名称保存到数据库;
3. 虽然数据库中支持把图片直接保存到数据库,但是,并不推荐这样做,因为图片
(二进制)形式的文件直接保存到数据库中,占的内存比较大,数据库加载数据/索引时,速度也会下降;会严重影响程序的运行速度;
4. 一般情况下,都是把图片保存到硬盘上,然后再把图片的路径/名称保存到数据库上;
5. 图片的格式分为5种,例如:.jpeg /.png /.jpg /.gif /.bmp
6. Gif格式的图片一般为动态图片;
7. FileReader();文件读取器
8. 使用文件读取器读取文件时,需要把文件转为URL(Base64);
9. 图片上传时,会转换为Base64编码,其实就是(二进制)文件转Base64编码;
10. 使用jQuery发送FromData数据的方式上传文件时,必须设置
processData: false 告诉jQuery不要去处理发送的数据
contentType: false 告诉jQuery不要去设置Content-Type请求头
11. 且上传图片(文件)时只能使用post提交,不能使用get提交;
12. 图片上传时,发送到后台控制器,是以流的形式发送的;
13. 保存图片到数据库的步骤,如下:
1.获取图片的扩展名称;
String 变量1= System.IO.Path.GetExtension(页面传递的图片名称);
2.拼接要保存的图片(文件)名称;
String 变量2 = DateTime.Now.ToString("yyyyMMddHHmmssffff") + "_" + Guid.NewGuid() + 变量1;
3.拼接文件保存的路径;
String 变量3= Server.MapPath("~/Document/userPicture/") + 变量2;
4.保存上传的图片(文件)到硬盘;
userPicture.SaveAs(变量3);
5.文件名称保存到user对象;
user.picture = 变量2;

修改图片
1. 使用jQuery提交图片的时候,无论是上传图片还是修改图片,都不能直接使用
jQuery已经封装好的post提交,因为无法提交上去,必须使用jQuery的FromData提交,或者使用原生的js提交方式;
2. 修改图片的步骤:
第一步:回填图片,并获取页面上的图片;
1.拼接图片的路径;
var 路径名 = "@Url.Content("~/Document/userPicture/")" + jsonData.picture;
2.修改图片(src)的路径;
$("#ID选择器").attr("src", 路径名);
3.获取回填成功的图片
var 变量1 = $("#id选择器 ").get(0).files[0];
注:这里不能使用Value获取值,获取图片只能使用files[索引];
3. 后台控制器的操作:
第二步:查询出旧的图片名称





Single()查询一条数据;
第三步:获取新上传的图片名称,并保存;
5.获取新图片的扩展名称;
String 变量1= System.IO.Path.GetExtension(页面传递的新图片名称);
6.拼接要保存的新图片(文件)名称;
String 变量2 = DateTime.Now.ToString("yyyyMMddHHmmssffff") + "_" + Guid.NewGuid() + 变量1;
7.拼接文件保存的新路径;
String 变量3= Server.MapPath("~/Document/userPicture/") + 变量2;
8.保存新上传的图片(文件)到硬盘;
userPicture.SaveAs(变量3);
9.文件名称保存到user对象;
user.picture = 变量2;
第四步:把查询出来的原来旧图片删除掉;
10.拼接旧图片的路径;
string 旧路径名 = Server.MapPath("~/Document/userPicture/") + 旧图片名;
11.最后删除原来图片的旧路径,并保存修改即可;
System.IO.File.Delete(旧路径名);
4. 删除图片的步骤就是以上内容的第4.10.11条方法;
同样是需要先查询出旧的图片,然后拼接路径,再删除路径;
5.其实修改图片,就是结合了图片上传(保存)和删除图片的方法;
...全文
322 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
非技术类

1634

社区成员

VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
帖子事件
创建了帖子
2020-08-09 08:38
社区公告
暂无公告