【问题标题】:Spring - How to upload image from folder to databaseSpring - 如何将图像从文件夹上传到数据库
【发布时间】:2020-11-12 02:23:03
【问题描述】:

你好,我正在尝试做这样的事情:

 private Byte[] getImage() throws IOException {

        String imageUrl = ServletContext.class.getClassLoader()
                .getResource("static/anImage.jpg")
                .getFile();

        Byte[] byteObject = new Byte[imageUrl.getBytes().length];

        int i = 0;
        for (Byte b : imageUrl.getBytes()){
            byteObject[i++] = b;
        }
        return byteObject;
    }

但这是错误的。那么如何从特定目录中获取文件呢?谢谢。

ps。 我可以这样做:

 File file = new File("image.jpg");
        byte[] content = Files.readAllBytes(file.toPath());

但它仍然是仅来自主文件夹的路径。不知道如何为资源/图像文件夹编程。

【问题讨论】:

  • 您可以将文件作为Resource 读取,然后从资源中获取inputstream 并转换为字节
  • 好的。什么是类路径:?它的某种文件夹?资源?
  • 谢谢,这太棒了。如果您将其发布,我会接受它作为答案。
  • 完成!删除评论并添加答案。

标签: java spring image upload


【解决方案1】:

在 Spring 中,您可以使用 Resources 来实现您的目标:

Resource resource = new ClassPathResource("static/anImage.jpg"); 
byte[] bytes = resource.getInputStream().readAllBytes();

【讨论】:

    【解决方案2】:

    不要重新发明轮子并使用例如用于将文件转换为字节数组的 Apache Commons。阅读更多FileUtils.readFileToByteArray(File input)

    您加载资源的方式似乎是正确的。

    确保加载的文件位于正确的位置(src/main/resources)。

    您是否有任何描述该问题的特定错误或堆栈跟踪。

    【讨论】:

    • Dzięki za pomoc, będę pisał po ang, żeby każdy rozumiał。谢谢,不知道存在 FileUtils 之类的东西。它运作良好。但问题是我不知道如何从资源/静态等位置加载文件。 Servlet 上下文不起作用。所以我正在寻找一种从目录中挑选文件的方法。
    • “Servlet 上下文不起作用”是什么意思?你有什么例外吗?
    • 没有例外。但图片未上传,无法在浏览器上显示。原因是因为 imageUrl.getBytes().length 只包含 84 个元素的数组。但是当我使用 File file = new File("image.jpg");并且图像位于项目主文件夹中,我可以在浏览器中显示它,它可以工作,它的数组包含大约 200.000 个元素。所以我仍然无法从不同的路径加载图像。
    • 现在我明白了。 imageUrl 是字符串,因此您可以从带有路径的字符串中获取字节。尝试将 imageUrl 表单字符串更改为文件: File fimageUrl = new File( getClass().getClassLoader().getResource("database.properties").getFile() );它应该开始工作了。
    • 我得到 java.io.FileNotFoundException: File 'C:\Moje\IntelliJ%202020.1.2\WORK\projekt\shopBackend\target\classes\static\gow2.jpg' 仍然不存在请参阅目标/类/静态中的 jpg。我会用 Edgar 写的类路径和资源来试试这个东西
    猜你喜欢
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2018-04-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多