日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Java Spring-無法將圖像保存到靜態文件夾的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我想將圖像保存到resources/static/photos文件,但Java/Kotlin找不到它。但它發現project/photos很好。

這是用科特林編寫的代碼,但我認為這無關緊要

    override fun saveImage(imageFile: MultipartFile, id: String) {
        val bytes = imageFile.bytes

        val path = Paths.get(
            "$imagesFolderPath$id.${imageFile.originalFilename.substringAfter('.')}")
        Files.write(path, bytes)
    }

我需要將此文件保存到resources/static/photos,以便能夠從胸腺葉訪問它。

謝謝。

推薦答案

問題是,您可能能夠在開發階段將文件保存在項目目錄中,但一旦將項目導出為應用程序包(<[2-3]-應用程序、.war-存檔等),就不可能做到這一點,因為在這一點上,以前是文件系統上的實際目錄的所有內容現在都是單個文件。

以下是如何通過將圖像保存在可配置文件夾中來實現此功能的示例:

我從未用Kotlin編寫過一行代碼。我希望這個示例能夠幫助您,即使它是用Java編寫的。

這是一個示例控制器,它接受要在POST終結點上載并在GET終結點下載的圖像:

package example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Optional;

@RestController
public class MyController {

    private final Path imageStorageDir;

    /*
    The target path can be configured in the application.properties / application.yml or using the parameter -Dimage-storage.dir=/some/path/
     */
    @Autowired
    public MyController(@Value("${image-storage-dir}") Path imageStorageDir) {
        this.imageStorageDir = imageStorageDir;
    }

    @PostConstruct
    public void ensureDirectoryExists() throws IOException {
        if (!Files.exists(this.imageStorageDir)) {
            Files.createDirectories(this.imageStorageDir);
        }
    }

    /*
    This enables you to perform POST requests against the "/image/YourID" path
    It returns the name this image can be referenced on later
     */
    @PostMapping(value = "/image/{id}", produces = MediaType.TEXT_PLAIN_VALUE)
    public String uploadImage(@RequestBody MultipartFile imageFile, @PathVariable("id") String id) throws IOException {
        final String fileExtension = Optional.ofNullable(imageFile.getOriginalFilename())
                .flatMap(MyController::getFileExtension)
                .orElse("");

        final String targetFileName = id + "." + fileExtension;
        final Path targetPath = this.imageStorageDir.resolve(targetFileName);

        try (InputStream in = imageFile.getInputStream()) {
            try (OutputStream out = Files.newOutputStream(targetPath, StandardOpenOption.CREATE)) {
                in.transferTo(out);
            }
        }

        return targetFileName;
    }

    /*
    This enables you to download previously uploaded images
     */
    @GetMapping("/image/{fileName}")
    public ResponseEntity<Resource> downloadImage(@PathVariable("fileName") String fileName) {
        final Path targetPath = this.imageStorageDir.resolve(fileName);
        if (!Files.exists(targetPath)) {
            return ResponseEntity.notFound().build();
        }

        return ResponseEntity.ok(new PathResource(targetPath));
    }

    private static Optional<String> getFileExtension(String fileName) {
        final int indexOfLastDot = fileName.lastIndexOf('.');

        if (indexOfLastDot == -1) {
            return Optional.empty();
        } else {
            return Optional.of(fileName.substring(indexOfLastDot + 1));
        }
    }
}

假設您上傳了文件結尾為.png、id為HelloWorld的am圖片,然后可以使用url訪問該圖片:
http://localhost:8080/image/HelloWorld.png

使用此URL,您還可以在任何胸腺葉模板中引用該圖像:

<img th:src="@{/image/HelloWorld.png}"></img>

這篇關于Java Spring-無法將圖像保存到靜態文件夾的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Java Spring 保存 圖像 文件夾 靜態
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定