JSP 上传图片+显示图片的问题

来源:互联网 发布:2k14 mac不流畅 编辑:程序博客网 时间:2024/04/27 19:07

昨天,看了一下课设的要求,我做的题目中还有需要上传和显示图片的功能没做,于是乎便开始进行这方面的工作了。

在做这部分的时候,我之前上课听老师说过有别人做好的架包,但是我想自己实现一下,在这之中遇到了一些问题,

 

 

1:文件上传(图片),这里我默认只支持 JPG 格式的,

这里主要是通过 :

文件输入输出流(完成文件的创建或者打开)

JPG对应的相关函数(完成文件的编码和传输)

 

 

  FileOutputStream ot = new FileOutputStream(path);   创建一个输出流对象,给了服务器的所要存储图片的路径


  FileInputStream in=new FileInputStream(ima);           为我们本地的图片创建一个输入文件流对象,ima 本地的图片路径


  JPEGImageDecoder jpgCodec = JPEGCodec.createJPEGDecoder(in);   
  BufferedImage image = jpgCodec.decodeAsBufferedImage();             获取译码后的buffer


  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(ot);    

  encoder.encode(image);                                                  完成图片的上传


  in.close();
  ot.close();

 

2:图片的显示

这部分由于我在这之前,使用的路径上有问题,所以造成了图片不能正常显示。

因为我之前使用的路径是本机的绝对路径,因为我认为只要我知道那个图片的绝对路径,

我就一定能够把图片显示出来,但是如果在其他的电脑上访问我的机器,默认也会去

那台电脑的那个绝对路径去读文件,但是那个文件并不在客户端上边的,所以,这里就必须

做一个调整。我们可以在服务器上传时,保存工程和图片文件所构成的一组路径(/工程名/文件名)

 

然后,我们在显示的时候,通过

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

这两句得到每个客户端访问图片的前端路径 basepath,然后 basePath + (/工程名/文件名) 就能够正确的访问图片了。。。