0

我正在获取 S3 对象,然后将对象作为附件发送到电子邮件中。我将内容保存在一个临时文件中。对于图像,代码工作正常,但在文档(pdf、docx、csv)文件的情况下,附件发送时不带扩展名,因此无法访问。

 try {
            fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));
            System.out.println("fullObject: " + fullObject);
            ObjectMetadata metadata = fullObject.getObjectMetadata();
            System.out.println(" meta data type: " + metadata.getContentType());
            InputStream inputStream = fullObject.getObjectContent();

            String extension = fullObject.getKey();
            int index = extension.lastIndexOf('.');
            if(index > 0) {
                extension = extension.substring(index + 1);
                System.out.println("File extension is " + extension);
            }

            File file = File.createTempFile(key, "."+ extension );
            System.out.println("file: "+ file);
            try (OutputStream outputStream = new FileOutputStream(file)) {
                IOUtils.copy(inputStream, outputStream);
            } catch (Exception e) {
                System.out.println("error in copying data from one file to another");

            }
            dataSource = new FileDataSource(file);
            System.out.println("added datasource in the list");
            attachmentsList.add(dataSource);
        }
4

1 回答 1

0

浏览此代码后,我知道问题不在此代码中,而是在我设置文件名称时。我正在设置没有任何扩展名的文件名,例如我将文件名设置为“临时”,这导致文档以 tmp 扩展名保存。我所要做的就是添加对象的扩展名及其名称(“temporary.docx”),这解决了问题并且附件被正确发送并且可以访问。

于 2021-09-10T09:01:38.327 回答