![](/img/trans.png)
[英]How to get bearer token from header of a request in java spring boot?
[英]How to get pictures from mounted volume in java spring boot
我在 docker 容器中有一個 java 應用程序,保存圖片工作正常但獲取它們不起作用我得到錯誤:javax.imageio.IIOException:無法讀取輸入文件..
這是我的 doker 圖像,
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=*.jar
EXPOSE 9000
COPY build/libs/wall-0.0.1-SNAPSHOT.jar .
ENTRYPOINT ["java","-jar","wall-0.0.1-SNAPSHOT.jar"]
安裝部分在 kube.netes 集群配置中完成:
apiVersion: apps/v1
kind: Deployment
metadata:
name: wall-app
labels:
app: wall-app
spec:
replicas: 1
selector:
matchLabels:
app: wall-app
template:
metadata:
labels:
app: wall-app
spec:
containers:
- name: wall-app
image: u/wall
imagePullPolicy: Always
ports:
- containerPort: 9010
resources:
limits:
memory: 512Mi
volumeMounts:
- name: images-volume
mountPath: /images
volumes:
- name: images-volume
hostPath:
path: /home/ubuntu/images-volume
我的 java 應用程序 function 獲取圖像: 不:我確定圖片名稱是正確的 problem 與輸入 stream
@PostMapping(value = "/post/image")
public @ResponseBody String getImageAsBase64(@RequestBody String json){
try {
JSONObject jsonObject = new JSONObject(json);
String path = "/images/post/" + jsonObject.get("postId) + "/" + jsonObject.get("pictureName");
InputStream in = getClass()
.getResourceAsStream(path);
String encodedString = Base64.getEncoder().encodeToString(IOUtils.toByteArray(in));
System.out.print(path);
//images/post/5/test.png
return encodedString;
}catch(Exception e) {
System.out.println("picture not found"+e);
}
return null;
}
我試過../ 得到上面的一個目錄,但它沒有用
getResourceAsStream
方法僅用於從類路徑中讀取資源(文件),這是一個相當合乎邏輯的事情。 據我所知,您想直接從文件系統讀取圖像,在您的類路徑之外,這可以從您的ENTRYPOINT
觀察到。 為此,您可以使用FileInputStream
。 因此,您必須用以下代碼替換in
變量:
InputStream in = new FileInputStream(path);
但不要忘記關閉輸入 stream。為此,您可以使用方便的try-with-resources 語句。 之后,您的相關代碼將如下所示:
try (InputStream in = new FileInputStream(path)) {
String encodedString = Base64.getEncoder().encodeToString(IOUtils.toByteArray(in));
System.out.print(path);
//images/post/5/test.png
return encodedString;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.