zoukankan      html  css  js  c++  java
  • 如何在Jsp上传图片

    1. 新建一个Dynamic Web Project:

    clip_image002[4]

    2. 键入工程名UploadImage:

    clip_image004[4]

    3. 选择Dynamic web module version :2.5

    clip_image006[4]

    4. 点击“Finish”

    clip_image008[4]

    clip_image010[4]

    5. 新建两个jsp文件:ImageUpload.jsp和ImageUploadHandler.jsp

    clip_image012[4]

    clip_image014[4]

    6. 新建一个类,专门用来处理图片上传

    新建一个包mytest:

    clip_image016[4]

    在包下新建一个类FileUpload:

    clip_image018[4]

    clip_image020[4]

    代码内容:

    package mytest;

    import java.awt.image.BufferedImage;

    import java.io.*;

    import java.awt.Image;

    import com.sun.image.codec.jpeg.JPEGCodec;

    import com.sun.image.codec.jpeg.JPEGImageEncoder;

    public class FileUpload

    {

    public static void uploadImage(String imgFolderPath,String srcFileName,String dstFileName) throws IOException

    {

    //判断文件夹image是否存在,若不存在则创建

    File folder = new File(imgFolderPath);

    System.out.println("function 'uploadFileTest2'-imgFolderPath'"+imgFolderPath);

    if(!folder.exists())

    {

    folder.mkdir();

    System.out.println("maked a folder!");

    }

    File _file = new File(srcFileName); //读入文件

    Image src = javax.imageio.ImageIO.read(_file); //构造Image对象

    int wideth=src.getWidth(null); //得到源图宽

    int height=src.getHeight(null); //得到源图长

    BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);

    tag.getGraphics().drawImage(src,0,0,wideth,height,null);

    FileOutputStream out=new FileOutputStream(dstFileName); //输出到文件流

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

    encoder.encode(tag); //JPEG编码

    out.close();

    System.out.println("function 'uploadFileTest2'-status:A Image File Saved!");

    }

    }

    发现报错:

    clip_image022[4]

    找到代码的库Libraries:

    clip_image024[4]

    打开rt.jar所在文件夹:

    clip_image026[4]

    复制这个文件:

    右键粘贴到WEB_INF\lib下:

    clip_image028[4]

    效果:

    clip_image030[4]

    没再报错。

    7. 修改ImageUpload.jsp

    说明:这个jsp文件,需要一个能选择文件的控件<input type=”file”

    保存时出现问题:

    clip_image032[4]

    改3个地方,全部改成gb2312:

    clip_image034[4]

    clip_image036[4]

    8. 修改ImageUploadHandler.jsp

    说明:这个jsp文件需要对从ImageUpload.jsp传过来的文件上传到服务器,并读取服务器上的图片文件,把它显示出来。

    改几个地方:

    (1)引入包及修改编码gb2312

    clip_image038[4]

    (2)修改编码gb2312

    clip_image040[4]

    (3)修改标题

    clip_image042[4]

    (4)上传图片代码

    <%

    String filePath = request.getSession().getServletContext().getRealPath("");//获取该项目的真实路径

    out.println(filePath+"<br/>");

    String photo=request.getParameter("imgUpload");//获取file控件里的路径(绝对路径)

    int indexOfLine = photo.lastIndexOf("\\");

    String fileName = photo.substring(indexOfLine+1,photo.length());//文件名(含后缀,不包含路径信息)

    String destFilePathAndName = filePath+"\\image\\"+fileName;//要保存文件的路径

    FileUpload.uploadImage(filePath+"\\image\\",photo,destFilePathAndName);//上传图片到目的路径

    String relativeFilePath = ".\\image\\"+fileName;//用来显示图片的相对路径

    out.println(photo+"<br/>");

    out.println(destFilePathAndName+"<br/>");

    %>

    (5)显示图片

    上传的图片:<img src="<%=relativeFilePath%>" width=100 height=112 border=0 alt="image display"/>

    (6)全版布局

    clip_image044[4]

    9. 运行

    选中ImageUpload.jsp这个文件,并点击“运行”三角形clip_image046[4]

    clip_image048[4]

    出现问题:

    clip_image050[4]

    看来一开始把版本设置成2.5无效。打开该项目所在目录:

    技巧:右键项目,选择Properties:

    clip_image052[4]

    看到Loacation:

    clip_image054[4]

    复制这个路径,打开“我的电脑”并在地址栏上粘贴,回车:

    clip_image056[4]

    clip_image058[4]

    打开.settings:

    clip_image060[4]

    使用记事本打开这个XML文档:

    clip_image062[4]

    把“jst.web”的version改成2.5

    clip_image064[4]

    右键点项目,刷新一下:

    clip_image066[4]

    :也可以安装一些插件,可以右键直接打开文件夹。

    10. 重新运行

    clip_image068[4]

    点击OK:

    选择“Manually define a new server”,并选择一个Tomcat(因示例使用Tomcat 6.0,配置时看具体版本而定)

    clip_image070[4]

    clip_image072[4]

    点击“Add”:

    clip_image074[4]

    在Browse…选择安装Tomcat6.0的路径,点击“Finish”,离开这个对话框,并回到上一层对话框,再点击“Finish”开始运行。

    出现问题:

    clip_image076[4]

    关闭这个文件,重新点击运行(保证当前打开的文件是ImageUpload.jsp):

    clip_image078[4]

    选择一个文件:

    clip_image080[4]

    发现没有提交按钮,回去修改ImageUpload.jsp:

    clip_image082[4]

    再次运行,运行后点击clip_image084[4]进行刷新:

    clip_image086[4]

    点击“提交”:

    clip_image088[4]

    删除调试信息及修改图片大小:

    注释掉out:

    clip_image090[4]

    加宽图片:

    clip_image092[4]

    重新运行:

    clip_image094[4]

    clip_image096[4]

    实际上,会出现图片能在eclipse内置的浏览器中正常显示,但却不能在外部浏览器中显示,原因在于,显示图片时用的文件必须是已经上传到服务器的图片,而不能是服务端的本地文件,而客户端是不允许直接访问服务器的本地文件,所以导致了错误,因此,在浏览器中检验一下:

    复制选中的URL:

    clip_image098[4]

    打开IE浏览器,在地址栏粘贴并回车:

    clip_image100[4]

    clip_image102[4]

    选择一个文件:

    clip_image104[4]

    点击“提交”:

    clip_image106[4]

    OK!

    :由于eclipse经常有一些Bug,所以,如果修改的代码总是不生效,可以考虑下面两种方法,“严酷”程序由低到高:

    (一) 停止程序并清除编译文件

    停止程序:

    clip_image108[4]

    清除编译文件:

    clip_image110[4]

    clip_image112[4]

    (二) 最狠的莫过于重启eclipse,不过,这仍不失为一个相当有效而又没法解释的好办法。

  • 相关阅读:
    debian 中安装GIT
    多核处理器 利用多线程 加速 编译内核 速度
    ubuntu下安装中文输入法(乱码等问题)
    ubuntu 10.04源 更新源列表
    php empty,isset,is_null比较(差异与异同) Leone
    Win 7 各版本的含义 Leone
    Atitit DbServiceV4qb9 数据库查询类库v4 新特性
    Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2
    Atitit 多继承实现解决方案 java c#
    Atitit 基于图片图像 与文档混合文件夹的分类
  • 原文地址:https://www.cnblogs.com/xiaxiazl/p/2420972.html
Copyright © 2011-2022 走看看