最好不要用数据库来存图片,那样数据库会受不了的,建议使用JspSmartUp组件完成上传,同时把路径存入数据库,然后从数据库中读出图片路径,再使用html标记显示就行了,

解决方案 »

  1.   

    JspSmartUP的相关例子中有说明的,楼主可以考虑一下使用这种方法
      

  2.   

    恐怕要让你失望,B 端没有那么强大,要处理必须自己写;你可以采用XML来做,但是这个对Browser的要求比较高,起码要有MS XMLDOM(指browser的操作系统,browser是IE这是必须的),然后判断图片的链接,如果是HTTP的就容易了,直接写成<img src="http://****">就可以了,如果是本地图片,用XMLDOM(ADODB.Stream)将图片读到XML中,保存成bin.base64结点,然后发送过去,显示就是做相反的操作就可以了。参数传递比较轻松,base64编码已经是文本,照文本的方式传就可以了,不用二进制流,写入数据库同样以文本方式保存就可以了。参考http://runmin.europe.webmatrixhosting.net/sample/savefileinxml/filetoxml.js
    http://runmin.europe.webmatrixhosting.net/sample/savefileinxml/xmltofile.js
      

  3.   

    普通的图片上传 - struts(估计可能满足不了你的要求)package com.geren;import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import org.apache.struts.upload.FormFile;
    import java.io.*;
    import java.io.*;public class UploadAct
        extends Action {
      public ActionForward execute(ActionMapping actionMapping,
                                   ActionForm actionForm,
                                   HttpServletRequest httpServletRequest,
                                   HttpServletResponse httpServletResponse) {
        /**@todo: complete the business logic here, this is just a skeleton.*/
        Upload upload = (Upload) actionForm;
        FormFile img = upload.getFilename();
        try {
          if ( img.getFileSize() > 1024 * SYS.MAX_UPLOAD_SIZE )
          {
            return actionMapping.findForward("fileWrong");
          }
          if ( !img.getFileName().matches("^.*jpg$") )
          {
            return actionMapping.findForward("fileWrong");
          }
          byte Byte[] = new byte[1024 * SYS.MAX_UPLOAD_SIZE];     //  上传最大30K
          img.getInputStream().read(Byte);
          OutputStream out = new FileOutputStream(SYS.P_IMG_PATH +
                                                  httpServletRequest.getSession().
                                                  getAttribute("UserID") + ".jpg");
          out.write(Byte);
        }
        catch (FileNotFoundException ex) {
        }
        catch (IOException ex) {
        }
        return actionMapping.findForward("finish");
      }
    }
      

  4.   

    图片的数据库存取,需要用的Blob字段的存取!
    只谈思路,相关代码可以查一查,很多的。
    存:首先查到相关Blob字段的纪录,需要在sql里加入“for update”,然后再插入一个emptyblob(),再把你的图片以流的形式存入相关blob里。
    读:一样通过流的形式从数据库中读出,显示在页面上!
    说起来简单,做起来复杂,Good Luck!
      

  5.   

    谢谢各位。我还是有些不明白。现在可以不考虑图片问题,我就想知道怎么让B端传过来的数据怎么按照原来格式保存,读出来的时候仍然是原来的分段格式。
        我原来的是NTEXT的,只要象这样
        String outputData=request.getParameter("outputData");
        就可以得到前一个页面的参数,再将他存储就可以了。但这样存储进去的就没有分段。