扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
直接存,直接读.要注意格式,就是类型,数据库设计时,图片字段类型是IMAGE程序中取时转成IMAGE接收!
成都创新互联公司专注于石台网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供石台营销型网站建设,石台网站制作、石台网页设计、石台网站官网定制、微信小程序开发服务,打造石台网络公司原创品牌,更为您提供石台网站排名全网营销落地服务。
我来帮助你
首先你要明确你是要把图片放如数据库 ,还是要把图片的地址放到数据库
先说图片放入数据库。
由于图片的传输和文本不同,需要用流的形式进行传输,所以 form
form name="form1" method="post" action="baoCun.jsp" enctype="multipart/form-data"
需要这么写
,这样就能保证你提交的是流。
然后文章当然在baoCun.jsp里面做了。我把代码复制上来
%@ page import="com.jspsmart.upload.*" %
%@ page import="com.hy.*,java.io.*,java.sql.*" %
%
try
{
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
su.upload();
// su.setMaxFileSize()
int count = su.save("/aa");
String userName = su.getRequest().getParameter("userName");
System.out.print(userName);
if(count 0)
{
Files fs = su.getFiles();
for (int i = 0; ifs.getCount(); i++)
{
com.jspsmart.upload.File f = fs.getFile(i);
String fn = f.getFileName();
System.out.println (fn);
InputStream is = this.getClass().getResourceAsStream("/../../aa/"+fn);
PreparedStatement ps = PS.getPS("insert pic (pic,name) values (?,?)");
System.out.println ("66666");
ps.setBinaryStream(1,is,is.available());
ps.setString(2,userName);
System.out.println (userName);
int row = ps.executeUpdate();
if(row0)
{
out.print(" o le");
}else
{
out.println ("shi tou mei le");
}
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
%
这里用到了上传下载类jspsmartupload.jar 你去网上下来就能用了
第二种是把地址放入数据库,这枚什么好说得把?只是把他的绝对路径放入数据库,要用直接拿出来就成。这种用法比较常见,也非常建议你这么用
第一中方法几乎淘汰了,如果你从数据库中取图片流的话流的开始和结尾一个字符都不能又差错,而且速度慢。建议你用第二种
数据库用什么字段我还真忘了拉,反正不是varchar int 什么的。。
你可以把表的类型
设计 成为二进制类型.
Binary 类型:
数据类型 描述
bit 允许 0、1 或 NULL
binary(n) 固定长度的二进制数据。最多 8,000 字节。
varbinary(n) 可变长度的二进制数据。最多 8,000 字节。
varbinary(max) 可变长度的二进制数据。最多 2GB 字节。
image 可变长度的二进制数据。最多 2GB。
不过我个人觉得,把图片 ,存到数据,会使数据库的数据,增长的很快.
不是很建议这样做.
可以把图片 存到服务器上的某个路径 下..
delphi 的图像缩放示例代码如下:
//将图片缩放至指定大小
procedure SizeBmp(const Source, Dest: string; const x, y: integer);
var
aBmp, bBmp: tbitmap;
scalex, scaley: real;
begin
aBmp := TBitmap.Create;
bBmp := TBitmap.Create;
try
aBmp.LoadFromFile(Source);
scaley := aBmp.Height / y;
scalex := aBmp.Width / x;
bBmp.Width := round(aBmp.Width / scalex);
bBmp.Height := round(aBmp.Height / scaley);
bBmp.PixelFormat := pfDevice;
SetStretchBltMode(bBmp.Canvas.Handle, COLORONCOLOR);
StretchBlt(bBmp.Canvas.Handle, 0, 0, bBmp.Width, bBmp.Height,
aBmp.Canvas.Handle, 0, 0, aBmp.Width, aBmp.Height, srccopy);
bBmp.SaveToFile(Dest);
finally
aBmp.Free;
bBmp.Free;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
SizeBmp('e:\1112.bmp','e:\1112_small.bmp',640,480);
end;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流