解决img中不能使用绝对
报错原因
如果页面在服务器上,浏览器出于安全考虑是不允许html访问本地文件的。
解决方案
1、设置映射
2、相对路径
3、读取本地文件,然后返回result
4、通过localhost,本地端口,设置动态url
这里我太菜了,只会第三种
第三种解决方案
使用FileReader读取文件,然后将result返回给src。
function previewFile() {
const img = document.getElementById('img')
const file = document.getElementById('file').files[0]; // 使用input,type='file'获取本地文件,也可以通过其他方式,比如createReadStream
const reader = new FileReader()
// 读取指定文件或Blob对象,读取完成触发loadend事件,同时result属性将包含一个data:URL格式的字符串,表示所读取文件的内容
file && reader.readAsDataURL(file);
reader.addEventListener("load", function() {
img.src = reader.result;
}, false)
}
第四种解决方案
最近一直看,终于看懂了
大佬主要用到的东西是express和fs。
大概思路
const exp = require('express')
const fs = require('fs-extra')
const path = require('path')
exp.get('/:taskcode/cover.jpg', (req, res) => {
const filePath = path.join(getDirpath(taskCode), 'cover.jpg') // 获取本地路径
try {
// 同步查看文件权限
fs.accessSync(filePath, fs.constants.R_OK)
// 然后将文件数据给res发送出去
fs.createReadStream(filePath).pipe(res);
} catch(error) {
res(error)
}
})
// 上面准备工作做完
<img src=`http://localhost:${port}/${taskCode}/cover.jpg` />
参考文档:
readAsDataURL
FileReader
行百里者半九十
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了