如题,多谢,辛苦
最好需要什么类库都能给出下载的地点,

解决方案 »

  1.   


    新一篇: Hibernate中的关联关系
    1,  jsp 页面的代码<%...@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
     
      <body> 
                                                     <!-- encType 必不可少 -->
        <form action="upImgServlet" method="post" encType=multipart/form-data>
            
            描述:
            <input type="text" name="description"/><br/>选择图片:
            <input type="file" name="img"/>
            <input type="submit" value="提交"/>
        </form>
      </body>
    </html>2, UpImgServlet 的代码. 
    public class UpImgServlet extends HttpServlet ...{    public void destroy() ...{
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException ...{        response.setContentType("text/html");
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");        // org.apache.commons.fileupload.DiskFileUpload 是一个开源包里的。
            DiskFileUpload du = new DiskFileUpload();
            du.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
            du.setSizeThreshold(4096);// 设置缓存区大小 ,4 kb;
            // up 为 /WebRoot 下的 一个目录
            du.setRepositoryPath(request.getSession().getServletContext()
                    .getRealPath("/up"));// 设置缓存目录        // 得到所有文件
            try ...{
                List list = du.parseRequest(request);
                Iterator it = list.iterator();
                while (it.hasNext()) ...{
                    org.apache.commons.fileupload.FileItem fileItem = (FileItem) it
                            .next();                // 是否为表单元素。如文本框 等等。
                    if (fileItem.isFormField()) ...{
                        String name = fileItem.getFieldName();
                    
                        //通过流 用来读取表单元素里的内容。
                        java.io.BufferedReader br = new BufferedReader(
                                   new InputStreamReader(fileItem.getInputStream()));
                        
                        //如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配。
                        if(name.equals("description"))...{
                            String contents =  br.readLine();
                            System.out.println(contents);
                            
                        }
                        
                    }
                    // 文件域
                    else ...{
                        // 获得文件名,这个文件名包括路径:
                        String fileName = fileItem.getName();
                        int index = fileName.lastIndexOf('.');
                        fileName = fileName.substring(index);
                        fileName = this.getFileName() + fileName;                                    //文件保存位置 
                        fileItem.write(new File(request.getSession().getServletContext().getRealPath("/img")+ "\" + fileName));
                        
                        System.out.println("上传成功");
                    }
                }        } catch (FileUploadException e) ...{
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) ...{
                // TODO Auto-generated catch block
                e.printStackTrace();
            }        PrintWriter out = response.getWriter();        out.flush();
            out.close();
        }    public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException ...{
            this.doGet(request, response);
        }    public void init() throws ServletException ...{
            // Put your code here
        }    // 以日期 获得一个文件名。(不重复);
        String getFileName() ...{
            java.util.Calendar cal = Calendar.getInstance();        int year = cal.get(Calendar.YEAR);
            int mon = cal.get(Calendar.MONTH);
            int day = cal.get(Calendar.DATE);
            int hour = cal.get(Calendar.HOUR);
            int min = cal.get(Calendar.MINUTE);
            int sec = cal.get(Calendar.SECOND);
            int mi = cal.get(Calendar.MILLISECOND);        System.out.println("mon" + mon);
            System.out.println("day" + day);
            return "" + year + mon + day + hour + min + sec + mi;    }}
      

  2.   

    可以去下边的参考一下
    http://blog.csdn.net/fengyifei11228/archive/2008/02/02/2077900.aspx
      

  3.   

    jspsmart我想用这个方法的
    大家都说这样的好,想知道具体的方法,
    我会加分的
      

  4.   

    最简单的直接将request.getInputStream()写到输出流中
      

  5.   

       1楼厉害啊...我只写过JavaGUI中上传图片的方法,并且写的非常的烂,也贴出来看看吧.import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.*;
    import javax.swing.JOptionPane;
    import java.lang.String;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.*;
    import java.sql.*;
    import javax.swing.JTextField;
    import javax.swing.JRadioButton;
    import javax.swing.JButton;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    import javax.swing.border.TitledBorder;
    import java.io.IOException;
    import java.io.File;
    import javax.imageio.*;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;.......
                        if(obj==btnBrowse){
                JFileChooser chooser = new JFileChooser();//选择文件
    ExampleFileFilter filter = new ExampleFileFilter();
    filter.addExtension("jpg");
    filter.addExtension("gif");
    filter.setDescription("JPG & GIF Images");
    chooser.setFileFilter(filter);
    chooser.showOpenDialog(null);//弹出一个 "Open File" 文件选择器对话框。
    String str1=chooser.getCurrentDirectory().toString();//返回当前目录
    String str2=chooser.getSelectedFile().getName();//返回选中的文件
    txtPhoto.setText(str1+"\\"+str2);
    String strPhoto=getPath(str1+"\\"+str2);//调用getPath()方法
    photoSizeShow(strPhoto);//设置图片大小并显示
    }
     //把路径中的"\"转化成"\\"
        public String getPath(String str){
         String strPh="";
    for(int i=0;i<str.length();i++){
    char ch=str.charAt(i);
    if( ch == '\\' )
    strPh=strPh+"\\"+"\\";
    else
    strPh=strPh+String.valueOf(ch);
         }
         return  strPh;
        }
        
        //把图片大小变成100*130并在标签上显示
        public void photoSizeShow(String str){
         try{
    File file=new File(str);
    BufferedImage image = ImageIO.read(file);     
    int width = 100; 
    int height = 130;   
    double  scaleWidth  =  (double) width / (double)  image.getWidth(); 
    double  scaleHeight  =  (double) height / (double)  image.getHeight(); 
    BufferedImage  dstImage  =  new BufferedImage(width, height, image.getType());
    AffineTransform  affineTransform  =  new  AffineTransform(); 
    affineTransform.scale(scaleWidth  ,  scaleHeight); 
    AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform,2);
    affineTransformOp.filter(image, dstImage); 
    Icon lconImage = new ImageIcon(dstImage);
    lblPhotograph.setIcon(lconImage);
    }catch(IOException e){
      System.out.println(e.getMessage());
    }
        }
      

  6.   

    Strutsfu.jsp
    <%@ page language="java" pageEncoding="gb2312"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
     
    <html> 
    <head>
    <title>JSP for FuForm form</title>
    </head>
    <body>
    <html:form action="/fu.do" method="POST" enctype="multipart/form-data">
    <html:file property="file"/>
    <html:submit/><html:cancel/>
    </html:form>
    </body>
    </html>imgs.jsp
    <%@ page language="java" pageEncoding="gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html locale="true">
      <head>
        <title>imgs.jsp</title>
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  </head>
      
      <body>
       <img src="${namePath}" />
      </body>
    </html:html>error.jsp
    <%@ page language="java" pageEncoding="gb2312"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
      <head>
        <title>error.jsp</title>
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  </head>
      
      <body style="font-size:12px">
        <font color="red">${str}</font>
      </body>
    </html:html>FuAction.java
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    FuForm fuForm = (FuForm) form;// TODO Auto-generated method stub
    Session ses = HibernateSessionFactory.getSession();
    Transaction tra = ses.beginTransaction();
    Imgs imgs = new Imgs();
    ImgsDAO idao = new ImgsDAO();
    String fu = ".jpg|.gif";
    Pattern pa = Pattern.compile(fu);
    FormFile ff = fuForm.getFile();
    String fileName = ff.getFileName();
    String pathName = "/Fu/imgs/" + fileName;
    System.out.println("fileName"+fileName);
    int fileSize = ff.getFileSize();
    List list = idao.findByNamePath(pathName);
    if(fileSize > 5000){
    String str = "您上传的图片过大!";
    request.setAttribute("str", str);
    return mapping.findForward("error");
    }else if(list.size() > 0){
    String str = "您上传的图片已存在!";
    request.setAttribute("str", str);
    return mapping.findForward("error");
    }else{
    imgs.setNamePath(pathName);
    idao.save(imgs);
    tra.commit();
    }
    String fileType = ff.getContentType();
    System.out.println("fileType"+fileType);
    Matcher mat = pa.matcher(fileName);
    if(mat.find()){
    System.out.println("是否找到:"+"find");
    try{
    byte b[] = ff.getFileData();
    String namePath = "D:\\java\\Fu\\WebRoot\\imgs\\"+fileName;
    FileOutputStream fos = new FileOutputStream(namePath);
    fos.write(b);
    fos.close();
    System.out.println("文件名:"+fileName);
    }catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    }else{
    System.out.println("是否找到:"+"not find");
    }
    System.out.println(list.size());
    imgs = (Imgs) list.get(0);
    System.out.println(imgs.getNamePath());
    request.setAttribute("namePath", imgs.getNamePath());
    return mapping.findForward("imgs");
    }FuForm.java
    private FormFile file;
    public FormFile getFile() {
    return file;
    } public void setFile(FormFile file) {
    this.file = file;
    }数据库就两个字段
    id identity(1,1)
    NamePath
      

  7.   

    我前几天刚好用写了个上传图片功能的JSP,给你共享个,需要使用jspSmartUpload组件,很多地方都有下载
    这里是JSP部分,哪位老大知道在这论坛里怎么发象5楼那样格式的代码的告诉俺一下哈,呵呵
    <%
    String strFilePath = request.getSession().getServletContext()
    .getRealPath("");
    //用户上传的图片路径
    String strUsrImg = strFilePath + "\\Images\\PublicImg\\usrMainPage"; if (session.getAttribute("KeyType") != null) {
    strKeySN = session.getAttribute("KeySn").toString();
    }
    if (request.getParameter("Act").equals("up")) {
    com.jspsmart.upload.SmartUpload mySmartUpload = new com.jspsmart.upload.SmartUpload();
    try {
    mySmartUpload.initialize(pageContext);
    //设置允许上传的格式
    mySmartUpload.setAllowedFilesList("jpg,gif,jpeg,png,JPG,GIF,JPEG,PNG");
    //设置允许上传图片的最大允许大小
    mySmartUpload.setMaxFileSize(30 * 1024 * 1024);
    mySmartUpload.upload();
    com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
    //获得要上传文件在本地的路径
    String filePath = myFile.getFilePathName();
    File image = new File(filePath);
    BufferedImage imgbuffer = ImageIO.read(image);
    //获得图片的高度和宽度
    int imgheight = imgbuffer.getHeight();
    int imgwidth = imgbuffer.getWidth(); if (!myFile.isMissing()) {
            if (imgheight != 502 && imgwidth != 835) {
            out.println("<script language='javascript'>alert('只允许上传高度为502,宽度为835的图片!');</script>");
            } else {
            File files = new File(strUsrImg);
            if (files.isDirectory()) {
            File[] filesList = files.listFiles();
            //保存之前先清空用户图片文件夹,此文件夹只保存一张图片
            if (filesList.length != 0) {
                    for (int i = 0; i < filesList.length; i++) {
                    filesList[i].delete();
                    }
            }
            } 
            String ext = myFile.getFileExt(); //取得后缀名           
            String strFileName = "userMainPage" + "." + ext;
            myFile.saveAs("/Images/PublicImg/usrMainPage/"+ strFileName,com.jspsmart.upload.SmartUpload.SAVE_VIRTUAL);
            out.println("<script language='javascript'>alert('图片上传成功!');</script>");
           }
        } else {
            out.println("<script language='javascript'>alert('图片上传失败!');</script>");
    }
    } catch (Exception e) {
    out.println("<script language='javascript'>alert('只允许上传jpg,gif,jpeg,png格式的图片文件!');</script>");
    }
    }然后是HTML部分的相关代码以及对应的JS
    <input type="button" class="btnButton_2char" name="bUpLoad"onclick="upload()" value="上&nbsp;传" />//上传图片
    function upload(){
        if(document.Upload.fileup.value == ""){
           alert("请选择要上传的图片!");
           return false;
        }
    if((document.Upload.fileup.value.substring(document.Upload.fileup.value.lastIndexOf("\\") + 1)).replace(/[^\x00-\xff]/g,'**').length > 60){
           alert("图片名称不能大于60个字符(30个汉字)!");
           return false;
        }    document.Upload.bUpLoad.disabled = true;
        document.Upload.action = "?Act=up&deleteSign=0&OptIP=" + SMObj.WebGetLocalIP();
        document.Upload.submit();
        showDiv('loading');
        setTimeout("doUpload()", 5000);
    }