当前位置: 首页 > 知识库问答 >
问题:

在服务器上保存文件/图像失败

文鸣
2023-03-14

我试图用一个标志图像存储一些细节,因为我已经创建了一个方法,并在我的本地系统中使用它,它似乎在那里工作得很好。但是当我把我的代码上传到云上的时候。我正在使用Heroku来承载我的web应用程序,它给了我一个错误。

2021-10-31T08:38:33.118740+00:00 app[web.1]: 2021-10-31 08:38:33.118  INFO 4 --- [io-47772-exec-9] com.Indoera.ecomProject.Utils.Utils      :  org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@60241167

2021-10-31T08:38:33.118885+00:00 app[web.1]: java.io.IOException: No such file or directory

2021-10-31T08:38:33.119038+00:00 app[web.1]:    at java.io.UnixFileSystem.createFileExclusively(Native Method)
public static String storeLogoPath(MultipartFile file) {
        String path = "";
        try {
            path = "G:/MainWorkSpace/TestProjects/ecomProject/src/main/resources/static/img/storeLogo/"+file.getOriginalFilename();
            File newFile = new File(path);
            newFile.createNewFile();
            FileOutputStream myfile = new FileOutputStream(newFile);
            myfile.write(file.getBytes());
            path ="/img/storeLogo/"+file.getOriginalFilename(); //PAth is setted mannualy to display images 
            myfile.close();
            logger.info("File should be saved now :: ");
        } catch (Exception e) {
            e.printStackTrace();
        }
        logger.info("Path Returned is ::: "  + path);
        return path;
    }

共有1个答案

谭光辉
2023-03-14

如果可以帮助您,这是我在Spring应用程序中使用的工作方法,使用java.nio.file

@Repository
public class FileSystemManagement {

    public boolean isValidContentType(String contentType) {
        return Arrays.stream(new String[] { "image/jpeg", "image/png" }).anyMatch(contentType::equals);
    }

    public String deleteFileInFileSystem(String baseLocation, String imageName) throws IOException {
        String location = baseLocation + imageName;
        Path filePath = Paths.get(location);
        Files.deleteIfExists(filePath);
        return imageName;
    }

    public String saveFileInFileSystem(String baseLocation, byte[] content, String imageName)
            throws IOException {
        String location = baseLocation + imageName;
        Path newFile = Paths.get(location);
        Files.createDirectories(newFile.getParent());
        Files.write(newFile, content);
        return imageName;
    }

    private String getPathFromStatic(String nonStaticPath) {
        return nonStaticPath.substring(nonStaticPath.indexOf("static"), nonStaticPath.length());
    }

    public ClassPathResource findFileInFileSystem(String baseLocation, String imageName) {
        return new ClassPathResource(getPathFromStatic(baseLocation) + imageName);
    }

    public String getExtension(String imageName) {
        return FilenameUtils.getExtension(imageName);
    }
}

我这样调用这个方法:

java prettyprint-override">@Override
    public void uploadImage(int id, MultipartFile multipartFile) throws IOException {
        if (fileSystemManagement.isValidContentType(multipartFile.getContentType())) {

            String extension = FilenameUtils.getExtension(multipartFile.getOriginalFilename());

            // Step (1) : Get old profile image

            User user = userDAO.findUserByUserId(id);

            if (user != null) {
                String oldPictureName = user.getImage();

                if (oldPictureName != null) {
                    fileSystemManagement.deleteFileInFileSystem(profilesLocation, oldPictureName);
                }
                user.setImage(fileSystemManagement.saveFileInFileSystem(profilesLocation, multipartFile.getBytes(),
                        MessageFormat.format(profilesTemplate, user.getUserId(), extension)));
                userDAO.save(user);

            } else {
                throw new LocalEatBadParamRequestException("The file must have a png or jpeg format");
            }
        } else {
            throw new LocalEatBadParamRequestException("userId doesn't exist in the database");
        }

    }
 类似资料:
  • 问题内容: 是否可以在不使用PHP的情况下使用JavaScript/jQuery将文本保存到新的文本文件中?我要保存的文本可能包含我不想转义或使用urlencode的HTML实体,JS,HTML,CSS和PHP脚本! 如果只能使用PHP来实现,如何将文本传递给PHP而不进行编码? 问题答案: 您必须具有服务器端脚本来处理您的请求,这不能使用javascript完成。 要将没有URIencoding

  • 这里是我的代码,在那里我已经尝试了几个小时,将上传的图像保存在不同大小的服务器文件夹中。但是,图像没有被保存,并且无法得到它出错的地方。以前,我使用二进制代码编写,如下面的第二个代码部分所示,通过从移动端以某种方式带来二进制数据(图片是从相机中获取的,并从移动端即时发送)。但随着数据的增加。我决定使用甚至上传图像文件与多部分类型的文件上传从我的移动端。 但下面的工作与我以前获取二进制数据时的相同函

  • 问题内容: 是否可以在不使用PHP的情况下使用JavaScript / jQuery将文本保存到新的文本文件中?我要保存的文本可能包含我不想转义或使用urlencode的HTML实体,JS,HTML,CSS和PHP脚本! 如果只能使用PHP来实现,如何将文本传递给PHP而不进行编码? 问题答案: 您必须具有服务器端脚本来处理您的请求,但这不能使用javascript完成。 要将没有URIencod

  • 问题内容: 我要上传图像并将其保存在服务器中。我上传了图像并获得了预览,但是我被困在将图像发送到服务器上。我想使用角度服务将此图像发送到服务器。 这是HTML代码 这是指令 问题答案: 假设您在后端中期望Multipart,这是一段对我有用的代码。 这是一个jsfiddle。 请注意 以下部分: 是一些Angular魔术,为了使$ http解析FormData并找到正确的内容类型,等等。

  • 问题内容: 我在DWR中使用Spring。我想返回一个文件对象作为响应,但是我将文件(要发送)保存在服务器的临时位置,然后将其位置作为href发送给客户端的锚标记,但是我想知道是否有办法抛出该文件文件直接发送到响应对象上的浏览器,而无需将其临时保存在服务器上。 我希望是否有办法通过DWR发送文件作为响应。 问题答案:

  • 我正在进行一个生成艺术项目,我希望允许用户保存从一个算法得到的图像。大意是: 使用生成算法在HTML5画布上创建图像 完成映像后,允许用户将画布作为映像文件保存到服务器 允许用户下载图像或将其添加到使用该算法生成的图像库中。 然而,我却被卡在了第二步上。经过谷歌的一番帮助,我找到了这篇博文,似乎正是我想要的: 这导致了JavaScript代码: 和相应的PHP(testsave.PHP): 但这似