无法将图片存入tomcat
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将图片存入tomcat相关的知识,希望对你有一定的参考价值。
我用的是myeclipse+tomcat6开发web 很低端的一个小项目_(:3」∠)_做的是一个注册登录和管理系统,注册时候在action里 保存图片的核心代码是
public String execute()
String realpath = ServletActionContext.getServletContext().getRealPath(
"/images");
String filename = CreateId.getStringId()//这里的Createid是以当日时刻命名文件
+ imageFileName.substring(imageFileName.lastIndexOf("."));
File savefile = new File(new File(realpath), filename);
try
FileUtils.copyFile(image, savefile);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
RDao rd = new RDao();
rd.R(ub,filename);
return "su";
并在tomcat本项目根目录下建了一个images文件夹存图片;
之后无论我怎么调用图片都是好用的。
但是但凡我重启了电脑之后,再点开myeclipse运行tomcat之后这个文件夹就没了。。期间没有重新部署过
这是哪里出的错?有什么解决办法么?
由于你的文件夹并非是创建在项目中的,当你的项目被重新编译过后,tomcat会重新加载你的项目,所以images文件夹就不见了。
问题再现:
在tomcat服务器的当前项目中创建一个文件夹images
myeclipse中点击Project-->clean 选择当前项目 -->ok
启动tomcat服务,然后你就会发现你的images文件夹没有了
解决方案:在项目的根目录下创建该文件夹。
补充一下:myeclipse启动项里面有重新编译选项,所以每次重启myeclipse都会被重新编译。
在项目根目录下的话那我保存图片的地址该怎么写?
参考技术A 保存失败,那会报Exception看看后台是什么错误信息(DELPHI)已经存入SQLSERVER中的图片数据(image字段)太大,怎么直接在数据库中压缩?或怎么用程序实现
存数据的时候没有考虑大小限制,所有图片都是分辨率极高的,现实使用中不需要这么高分辨率的图片,怎么用最简单的方法压缩数据库里的图片信息。
查了一些资料 发现没有什么简单的方法 只能写程序取出来 再压缩像素 再存入数据库。
怎么压缩像素?
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; 参考技术A delphi里面有zlib这个单元,里面有压缩的函数TCompressionStream可以调用!参考下面的代码去处理吧!
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//获得图像流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(CompressionLevel, DestStream);
Try
CompressedStream.SaveToStream(SourceStream);
//将原始流进行压缩, DestStream中保存着压缩后的流
SourceStream.Free;
CompressedStream.Clear;
//写入原始流的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;本回答被提问者和网友采纳 参考技术B DELPHI好像有个zip的第三方控件,你可以考虑把数据读出来,压缩后再存回去,然后,在需要使用的时候再把它解压。 参考技术C fg 参考技术D 没什么好办法,压缩好了再放进去。
以上是关于无法将图片存入tomcat的主要内容,如果未能解决你的问题,请参考以下文章
Delphi用ADOQuery将图片存入ACCESS,求一个示例。
(DELPHI)已经存入SQLSERVER中的图片数据(image字段)太大,怎么直接在数据库中压缩?或怎么用程序实现
关于JAVA~~~~ 如何将图片等大对象存入ORACLE中~~求详解!(代码)