<aside> 🚧 尚未修改
</aside>
在網頁裡要顯示圖片或影片其實很簡單,可以利用html裡的img,就可以顯示圖片了,可以透過width設定大小,如果設定100%,就是占螢幕的100%。alt是讓看不到圖片的人可以「讀」到圖片的內容。
import "./styles.css";
import AppMenu from "./ui/AppMenu";
export default function Image() {
return (
<div className="App">
<AppMenu />
**<img
src="<https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Periodic_table_zh-tw.svg/1821px-Periodic_table_zh-tw.svg.png>"
width="100%"
alt="週期表"
/>**
</div>
);
}
Firebase提供storage的服務,這個服務其實跟google drive很像,可以將檔案上傳,並且讀取。先利用Firebase Console上傳一個檔案
下載檔案可以透過Firebase提供的API來取得檔案的URL,再把url放在src,就好了!
先透過ref(),取得檔案的reference,再透過getDownloadURL()取得下載的連結,因為storage可以有權限的管控,getDownloadURL()取得的連結是經過授權的連結。
const starsRef = ref(storage, "Ben.jpg");
const imageUrl = await getDownloadURL(starsRef);
Image.js修改如下
import { getApps, getApp, initializeApp } from "firebase/app";
**import { getStorage, ref, getDownloadURL } from "firebase/storage";**
import { useEffect, useState } from "react";
import "./styles.css";
import AppMenu from "./ui/AppMenu";
import { firebaseConfig } from "/src/settings/firebaseConfig";
export default function Image() {
const app = getApps().length === 0 ? initializeApp(firebaseConfig) : getApp();
**const storage = getStorage(app);**
const [image, setImage] = useState("");
useEffect(() => {
async function fetchData() {
// You can await here
**const starsRef = ref(storage, "Ben.jpg");**
**const imageUrl = await getDownloadURL(starsRef);**
setImage(imageUrl);
}
fetchData();
}, [storage]);
return (
<div className="App">
<AppMenu />
<img src=**{image}** width="50%" alt="Ben" />
<img
src="<https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Periodic_table_zh-tw.svg/1821px-Periodic_table_zh-tw.svg.png>"
width="100%"
alt="週期表"
/>
</div>
);
}
可以利用Material-UI的Card來優化圖片及文字的展示。CardContent放的是文字的內容、CardMedia放的是圖片或影片,透過這些預設的元件,可以優化圖片及文字的展示。
Image.js修改如下: