只用struts上传过文件,图片?没试过学习

解决方案 »

  1.   

    把图片上传到服务器一个指定的地点,然后把这个路径的字符串存到数据库里,hibernate 里面定义个字段就可以了用struts  的 FormFile 这个东西上传图片
      

  2.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    FileForm fileForm = (FileForm) form;
    file=fileForm.getFileName();
    String name=file.getFileName();
    String path=getServlet().getServletContext().getRealPath("/");
    String sql;
    try{
    fileread=file.getInputStream();
    filewrite=new FileOutputStream(path+"yourfolder\\"+name);
    byte[] buffer=new byte[10240];
    while((bytesRead=fileread.read(buffer,0,10240))!=-1)
    filewrite.write(buffer,0,bytesRead);
    filewrite.close();
    fileread.close();
    file.destroy();
    } catch(IOException ex){
    ex.printStackTrace();
    }
      

  3.   

    楼上的说的不错,不过byte[] buffer=new byte[10240];
    文件大了不够用,小了浪费
    byte[] buffer=new byte[youFile.available()];
    用大字段会更爽一点
      

  4.   

    再给你提个醒,提交的时候一定要做检测,不要什么文件都可以提交上传,例如jsp
      

  5.   

    //ACTION 里加
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream; FormFile file = adif.getFile();

    String fname  = adif.getProgID();
    String postfix = file.getFileName(); // still not use
    String size = Integer.toString(file.getFileSize()) + "bytes";

    InputStream streamIn = file.getInputStream();
    OutputStream streamOut = new FileOutputStream(dir +"\\"+ fname + ".jpg" ); int bytesRead =0;
    byte[] buffer = new byte[8192];
    while((bytesRead = streamIn.read(buffer,0,8192)) != -1)
    {
    streamOut.write(buffer,0,bytesRead);
    }