Загрузка изображений и PDF-файлов в BLOB из вложения электронной почты - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь научиться сохранять вложения из моего почтового ящика в Oracle Database BLOB на стороне сервера.

Это часть моего кода:

static void InsertAttachment(String i_in, Message message) 
throws SQLException, IOException, MessagingException  
{
Object content = message.getContent();
if (content instanceof Multipart)
    {
    Multipart multipart = (Multipart)message.getContent();
    for (int i=0, n=multipart.getCount(); i<n; i++) 
        {
        Part part = multipart.getBodyPart(i);
        String disposition = part.getDisposition();
        if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) 
           {
            String fileName = i_in+"_"+part.getFileName().replace(' ','_');
            String contentType = part.getContentType();
            String mimeType = contentType.substring(0,contentType.indexOf(";"));
            InputStream inStream = part.getInputStream();
            Connection conn = DriverManager.getConnection("jdbc:default:connection:");
            PreparedStatement pstmt = conn.prepareStatement("update email_table set blob = ? where id = ?");     
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] tempBuffer = new byte[1]; // 1 B
            int numRead;
            while ((numRead = inStream.read(tempBuffer)) != -1) {
                                outStream.write(tempBuffer);
                                 }
            byte[] attachment = outStream.toByteArray();
            pstmt.setBinaryStream(1, new ByteArrayInputStream(attachment),attachment.length); 
            pstmt.setString(2, i_in);
            pstmt.executeUpdate();
            conn.commit();
            pstmt.close();  
           }
        }
    }
}

Он компилируется иработает без ошибок.Причем все текстовые файлы загружаются без проблем.Я могу прочитать и сохранить их, но все вложения изображений или PDF сохраняются в этом коде как ноль.

Я загружаю Java Source с помощью утилиты loadjava и создаю функцию pl / sql для запуска этого кода в Oracle Database.В настоящее время я использую Oracle Database 12.2.

Я новичок в этой теме, не могли бы вы помочь мне понять, в чем проблема?

ОБНОВЛЕНИЕ:

Использование рекомендаций MT0 I 'Я пытался скачать приложения, избегая базы данных.

Я использовал этот код:

static void InsertAttachment(String i_in, Message message) 
throws SQLException, IOException, MessagingException  
{
Object content = message.getContent();
if (content instanceof Multipart)
    {
    Multipart multipart = (Multipart)message.getContent();
    for (int i=0, n=multipart.getCount(); i<n; i++) 
        {
        Part part = multipart.getBodyPart(i);
        String disposition = part.getDisposition();
        if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) 
           {
            String fileName = i_in+"_"+part.getFileName().replace(' ','_');
            String contentType = part.getContentType();
            String mimeType = contentType.substring(0,contentType.indexOf(";"));
            //new code starts here
            String destFilePath = "D:/Attachment/" + part.getFileName();
              FileOutputStream output = new FileOutputStream(destFilePath);
              InputStream input = part.getInputStream();
              byte[] buffer = new byte[1];
              int byteRead;
              while ((byteRead = input.read(buffer)) != -1) {
                  output.write(buffer, 0, byteRead);
              }
              output.close();
           }
        }
    }
}

Все файлы были успешно сохранены этим кодом.

Итак, проблема связана с поведением этого кода на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...