Java Aws s3在部署并在本地工作后未使用MultipartFile且无法正常将文件上载到tomcat服务器

Java Aws s3在部署并在本地工作后未使用MultipartFile且无法正常将文件上载到tomcat服务器,java,file,amazon-s3,multipart,Java,File,Amazon S3,Multipart,将文件上载到aws s3 bucket时,其在本地工作正常。但是,当我在tomcat服务器上部署项目时,写入fileoutputstream(权限被拒绝) 这是图片 这是我的密码 private File convertMultiPartToFile(MultipartFile file) throws IOException { File convFile = new File(file.getOriginalFilename()); FileOutputSt

将文件上载到aws s3 bucket时,其在本地工作正常。但是,当我在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
时,它会显示这个错误


另外,若我将multipart直接上传到s3 bucket,那个么将其转换为文件将是一个错误。如果我将文件强制转换为多部分,则其给定(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服务器解决了代码问题。 下次请求时。我删除了现有的目录并再次创建它,只是为了写文件

使用以下代码:

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 < children.length; i++) {
            boolean success = deleteDir (new File(file, children[i]));
            if (!success) {
               return false;
            }
         }
      }
      logger.debug("The directory : "+file+" : is deleted.");
      return file.delete();
}
private boolean deleteDir(文件){
debug(“要删除的目录::”+文件);
if(file.isDirectory()){
String[]children=file.list();
for(int i=0;i