问题描述
解决方案
解决方案二:
最好保存到物理路径去
解决方案三:
数据库只存链接
解决方案四:
你把你的图片转换成二进制保存到数据库里面,读数据的时候在讲二进制转换成图片不就行了嘛
解决方案五:
不推荐这样做,只保存相对路径
解决方案六:
引用4楼qq_32395957的回复:
不推荐这样做,只保存相对路径
严重推荐这样做,在备份的时候相当轻松publicstaticstringConvertBytesToString(byte[]bytes){StringBuildersb=newStringBuilder();foreach(bytebinbytes){stringsby=Convert.ToString(b,16);if(sby.Length==1){sby="0"+sby;}sb.Append(sby);}returnsb.ToString();}
将byte[]转为0x开头的字符串后,直接拼成SQL语句(前后不需要单引号),执行Insert或Update即可
解决方案七:
引用2楼FoxDave的回复:
数据库只存链接
那要怎么把多张图读出来
解决方案八:
引用3楼lvfeng1989的回复:
你把你的图片转换成二进制保存到数据库里面,读数据的时候在讲二进制转换成图片不就行了嘛
能详细点讲解下吗???
解决方案九:
引用5楼jjkk168的回复:
Quote: 引用4楼qq_32395957的回复:
不推荐这样做,只保存相对路径严重推荐这样做,在备份的时候相当轻松publicstaticstringConvertBytesToString(byte[]bytes){StringBuildersb=newStringBuilder();foreach(bytebinbytes){stringsby=Convert.ToString(b,16);if(sby.Length==1){sby="0"+sby;}sb.Append(sby);}returnsb.ToString();}
将byte[]转为0x开头的字符串后,直接拼成SQL语句(前后不需要单引号),执行Insert或Update即可
读出来要怎么做
解决方案十:
一般,我只保存图片路径到数据库。存储图片流,字符太长,浪费数据库资源。而且拿出来还要转换在显示。
解决方案十一:
引用6楼qq_33035717的回复:
Quote: 引用2楼FoxDave的回复:
数据库只存链接那要怎么把多张图读出来
可以存在多个字段里,也可以在一个字段里把路径用符号分割
解决方案十二:
引用5楼jjkk168的回复:
Quote: 引用4楼qq_32395957的回复:
不推荐这样做,只保存相对路径严重推荐这样做,在备份的时候相当轻松publicstaticstringConvertBytesToString(byte[]bytes){StringBuildersb=newStringBuilder();foreach(bytebinbytes){stringsby=Convert.ToString(b,16);if(sby.Length==1){sby="0"+sby;}sb.Append(sby);}returnsb.ToString();}
将byte[]转为0x开头的字符串后,直接拼成SQL语句(前后不需要单引号),执行Insert或Update即可
强烈推荐啊?这数据库要多大才能满足你们这样用数据库存储文件的思维啊。能做CDN吗?
解决方案十三:
最好在数据库保存图片路径,如果硬是要保存图片的话,就在数据库建一个varbinary类型的字段,然后程序中将图片通过流转换为二进制,写sql语句保存,读取的时候将读出的二进制通过流转换为图片
解决方案十四:
解决方案十五:
引用10楼FoxDave的回复:
Quote: 引用6楼qq_33035717的回复:
Quote: 引用2楼FoxDave的回复:
数据库只存链接那要怎么把多张图读出来
可以存在多个字段里,也可以在一个字段里把路径用符号分割
跪求代码
解决方案:
引用9楼hanjun0612的回复:
一般,我只保存图片路径到数据库。存储图片流,字符太长,浪费数据库资源。而且拿出来还要转换在显示。
跪求代码
解决方案:
前台就一个Input的file控件。这里是mvc的上传代码.只是给个参考[ValidateInput(false)][HttpPost]publicActionResultCreate(HttpPostedFileBaseup1){if(ModelState.IsValid){if(up1!=null&&up1.FileName!=""){//判断文件夹是否存在stringimgUrl=“相对路径url”+DateTime.Now.ToString("yyyyMMdd")+"/";if(Directory.Exists(Server.MapPath(imgUrl))==false){Directory.CreateDirectory(Server.MapPath(imgUrl));}//上传图片stringimgName=DateTime.Now.ToString("yyyyMMddHHmmss")+".jpg";stringimgFilePath=Server.MapPath(imgUrl)+imgName;up1.SaveAs(imgFilePath);}returnRedirectToAction("Edit",new{id=wx_goods.id});}returnView();}
解决方案:
引用11楼fei2yun的回复:
Quote: 引用5楼jjkk168的回复:
Quote: 引用4楼qq_32395957的回复:
不推荐这样做,只保存相对路径严重推荐这样做,在备份的时候相当轻松publicstaticstringConvertBytesToString(byte[]bytes){StringBuildersb=newStringBuilder();foreach(bytebinbytes){stringsby=Convert.ToString(b,16);if(sby.Length==1){sby="0"+sby;}sb.Append(sby);}returnsb.ToString();}
将byte[]转为0x开头的字符串后,直接拼成SQL语句(前后不需要单引号),执行Insert或Update即可
强烈推荐啊?这数据库要多大才能满足你们这样用数据库存储文件的思维啊。能做CDN吗?
你以为真的很大么?你的文件放在磁盘里面与放在数据库文件中有何区别?不就是磁盘容量的事情么?读出来的规则:publicstaticbyte[]ConvertStringToBytes(strings){if(s.Trim().StartsWith("0x")){s=s.Substring(2);}byte[]bytes=newbyte[s.Length/2];for(inti=0;i<s.Length;i=i+2){byteb=Convert.ToByte(s.Substring(i,2),16);bytes[i/2]=b;}returnbytes;}