카테고리 없음

나모 대용량 이미지 첨부시 속도 저하문제 처리

neokido 2009. 5. 2. 17:40


    public String getBodyContent()
        throws MimeDecodeException, UnsupportedEncodingException
    {
        String decodeText = null;
        if(decodePart.size() <= 0)
            return null;
        MimePart part = (MimePart)decodePart.elementAt(0);
        decodeText = part.getBodypart();
        if(part.getEncoding() == null)
            return part.getBodypart();
        byte decodeByte[];
        try
        {
            InputStream is = new ByteArrayInputStream(part.getBodypart().getBytes("iso-8859-1"));
            BufferedInputStream bis = null;
            try
            {
                is = MimeUtility.decode(is, part.getEncoding());
                bis = new BufferedInputStream(is);
            }
            catch(MessagingException me)
            {
                throw new MimeDecodeException("Cannot Decoding");
            }
            decodeByte = new byte[is.available() + 1];
//            is.read(decodeByte);
           
            int read = 0;
            int pos = 0;
      byte b[] = new byte[1024];
      try{
       while((read = bis.read(b)) != -1){
        System.arraycopy(b, 0, decodeByte, pos, read);
        pos += read;
//        os.write(b,0,read );
          }
      } catch (Exception e) {
       e.printStackTrace();
      } finally {
//                os.close();
      }
     
        }
        catch(IOException ioe)
        {
            throw new MimeDecodeException("Cannot create input stream");
        }
        decodeText = new String(decodeByte);
        if(multipart)
            decodeText = changeCIDPath(decodeText);
        return decodeText;
    }

    public void saveFile()
        throws MimeDecodeException
    {
        String fileExt = "";
        fileInfo = new Hashtable();
        Vector vFileExt = new Vector();
        Vector vFileSize = new Vector();
        Vector vFileNm = new Vector();
        for(int i = 1; i < decodePart.size(); i++)
        {
            File outFile = null;
            OutputStream os = null;
            InputStream is = null;
            MimePart part = (MimePart)decodePart.elementAt(i);
            try
            {
                is = new ByteArrayInputStream(part.getBodypart().getBytes("iso-8859-1"));
                is = MimeUtility.decode(is, part.getEncoding());
               
                BufferedInputStream bis = new BufferedInputStream(is);
                outFile = new File(getWritableFileName(savePath + "/" + part.getName()));         
                os = new FileOutputStream(outFile);
                String fileName = getWritableFileName(part.getName());

//                fileContent = new byte[is.available() + 1];
//                is.read(fileContent);
//                part.setName(fileName);
//                os.write(fileContent);
               
                int read = 0;
          byte b[] = new byte[1024];
          try{
           while((read = bis.read(b)) != -1){
            os.write(b,0,read );
              }
          } catch (Exception e) {
           e.printStackTrace();
          } finally {
                    os.close();
          }

         
                if(fileName != null)
                {
                    int idx = fileName.lastIndexOf(".");
                    if(idx != -1)
                        fileExt = fileName.substring(idx + 1);
                    File f = new File(savePath + "/" + fileName);
                    vFileExt.add(fileExt.toLowerCase());
                    vFileSize.add("" + f.length());
                    vFileNm.add(fileName);
                }
            }
            catch(FileNotFoundException fnfe)
            {
                throw new MimeDecodeException("Cannot create file");
            }
            catch(IOException ioe)
            {
                throw new MimeDecodeException("Cannot write file");
            }
            catch(MessagingException me)
            {
                throw new MimeDecodeException("Cannot decode file");
            }
        }

        fileInfo.put("wec_fileExt", ((Object) (vFileExt.toArray())));
        fileInfo.put("wec_fileSize", ((Object) (vFileSize.toArray())));
        fileInfo.put("wec_fileNm", ((Object) (vFileNm.toArray())));
        fileInfo.put("wec_filePath", savePath);
    }