AWS s3在部署并在本地工作后未使用MultipartFile并且无法正常工作将文件上传到tomcat服务器,怎么办?

来源:爱站网时间:2021-10-06编辑:网友分享
AWS s3在部署并在本地工作后未使用MultipartFile并且无法正常工作将文件上传到tomcat服务器,怎么办?巧了这个问题爱站技术小编最近刚好遇到,现在找出了答案,发上来供大家参考一下。

问题描述


在将文件上传到AWS s3存储桶时,其在本地正常工作。但是,当我在tomcat服务器上部署项目时,它给了错误以编写fileoutputstream ((权限被拒绝)

这里是图像

 

这是我的代码

private File convertMultiPartToFile(MultipartFile file) throws IOException {
        File convFile = new File(file.getOriginalFilename());
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

    private String generateFileName(MultipartFile multiPart) {
        return new Date().getTime() + "-" + multiPart.getOriginalFilename().replace(" ", "_");
    }

    private void uploadFileTos3bucket(String fileName, File file) {
        s3client.putObject(
                new PutObjectRequest(bucketName, fileName, file).withCannedAcl(CannedAccessControlList.PublicRead));
    }

并且当我将File更改为Multipartfile时,显示此错误是我的错误

 

“如果我将文件转换成多个部分,而不是给出(I / O)例外

思路:


问题在此方法中:

关于S3,没有问题,因为使用

fileOutputstream而出现此问题,没有指定任何文件夹来写入文件。但是默认情况下,它会将文件写入项目中的target文件夹中。

private File convertMultiPartToFile(MultipartFile file) throws IOException { File convFile = new File(file.getOriginalFilename()); FileOutputStream fos = new FileOutputStream(convFile); fos.write(file.getBytes()); fos.close(); return convFile; }

所以我通过在上传时为

tomcat

server创建了一个folder来解决了代码。下一次请求到达时。我删除现有目录,然后再次创建它,仅用于写入文件。使用下面的代码:

private File convertMultiPartToFile(MultipartFile file) throws IOException { deleteDir(new File(NsdlUrlListService.einvoicePath)); //delete a dir File files = new File("home/ubuntu/txtgenie/einvoice/"); //create a dir if (!files.exists()) { if (files.mkdirs()) { logger.debug("Multiple directories are created!"); } else { logger.debug("Failed to create multiple directories!"); } } File convFile = new File(file.getOriginalFilename()); FileOutputStream fos = new FileOutputStream("/home/ubuntu/txtgenie/einvoice/"+convFile); logger.info(" File Name:: {} ", file); String fileName = null; byte[] bytes = file.getBytes(); fileName = file.getOriginalFilename(); if (!fileName.equals("No file")) { try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(new File("home/ubuntu/txtgenie/einvoice/" + fileName))); bos.write(bytes); bos.close(); } catch (FileNotFoundException fnfe) { logger.debug("File not found" + fnfe); } catch (IOException ioe) { logger.debug("Error while writing to file" + ioe); } } fos.write(file.getBytes()); fos.close(); return convFile; }

删除目录

private boolean deleteDir(File file) { logger.debug("DIR to delete :: " +file); if (file.isDirectory()) { String[] children = file.list(); for (int i = 0; i

以上内容就是爱站技术频道小编为大家分享的AWS s3在部署并在本地工作后未使用MultipartFile并且无法正常工作将文件上传到tomcat服务器,怎么办?看完以上分享之后,大家应该都知道怎么操作了吧。

上一篇:在MapView中使用底部表格时出错,要怎么处理

下一篇:编写一个程序,二维整数数组是否为正方形数组,即其行和列是否相等?

相关阅读

热门软件源码

最新软件源码下载