当前位置: 首页 > wzjs >正文

镇江网站建设哪家好广州网站建设weeken

镇江网站建设哪家好,广州网站建设weeken,濮阳公司建站,重庆seo外包行者seo06本周我的主要任务是关于专栏管理部分的完善。 专栏图片的显示问题 问题分析 根据代码可知:图片URL来自于portfolio.headImgUrl,而且如果URL不存在的话,应该显示的是无图片,而网页中显示加载失败说明portfolio.headImgUrl应该是存…

本周我的主要任务是关于专栏管理部分的完善。

专栏图片的显示问题

问题分析

在这里插入图片描述
在这里插入图片描述

根据代码可知:图片URL来自于portfolio.headImgUrl,而且如果URL不存在的话,应该显示的是无图片,而网页中显示加载失败说明portfolio.headImgUrl应该是存在的,但是路径可能有问题。在控制台中的404报错也印证了这一点。
在这里插入图片描述

对其中的URL进行解码可以得到http://localhost:3000/portfolio/上传失败!,看来是图片在上传时就有问题,导致URL被拼接成了上传失败。
在这里插入图片描述
在后端进行DeBug调试时找到问题所在,原来是配置文件中的存储图片的目录的路径有问题,导致返回了一个上传失败。

问题解决

通过修改配置文件中的路径使其能够显示正常的路径而不是上传失败,但现在路径仍不是我们想要的路径,所以还需要将存到数据库中的图片路径逻辑进行修改。
在这里插入图片描述
现在图片已经能够正确存储在后端的static文件夹下,并且其URL正确的存储到了数据库中。

后端

然后需要找到前端向后端请求的函数:

fetchPostDetail({ commit }, params = {}) {// const delay = fetchDelay(//   isBrowser// )// if (isBrowser) {//   Vue.nextTick(() => {//     window.scrollTo(0, 300);//   })// }if (typeof params.portfolio_id === 'undefined') {commit('updateDetailData', getDefaultListData())return;}commit('updateDetailFetching', true)// commit('updateDetailData', {})return this.$axios.$get(`${PORTFOLIO_API_PATH}/detail/${params.portfolio_id}`).then(response => {return new Promise(resolve => {commit('updateDetailData', response)commit('updateDetailFetching', false)resolve(response)// delay(() => {//   resolve(response)// })})}).catch(error => {commit('updateDetailFetching', false)return Promise.reject(error)})}

上述函数通过调用后端接口(${PORTFOLIO_API_PATH}/detail/${params.portfolio_id})获取作品集详情数据,更新到 Vuex store 的detail.data中,而作品集封面的URL就在detail.data中。

添加前端请求图片的接口并以base64编码的形式返回。

    @GetMapping("/image/{idPortfolio}/base64")public GlobalResult<String> getPortfolioImageAsBase64(@PathVariable Long idPortfolio, @RequestParam(defaultValue = "0") Integer type) throws IOException {// Get the portfolio DTO which contains the image pathPortfolioDTO portfolioDTO = portfolioService.findPortfolioDTOById(idPortfolio, type);if (portfolioDTO == null || portfolioDTO.getHeadImgUrl() == null) {throw new FileNotFoundException("Portfolio or image not found");}String path = portfolioDTO.getHeadImgUrl().replace("src/main/resources/", "");String extension = path.substring(path.lastIndexOf(".") + 1);// 3. 确定MIME类型String mimeType;switch (extension) {case "png":  mimeType = "image/png"; break;case "jpg":case "jpeg": mimeType = "image/jpeg"; break;case "gif":  mimeType = "image/gif"; break;case "svg":  mimeType = "image/svg+xml"; break;case "webp": mimeType = "image/webp"; break;default:     mimeType = "application/octet-stream";}ClassPathResource resource = new ClassPathResource(path);// Read file content and encode as base64try (InputStream inputStream = resource.getInputStream()) {byte[] fileContent = IOUtils.toByteArray(inputStream);String base64 = Base64.getEncoder().encodeToString(fileContent);String res = "data:" + mimeType + ";base64," + base64;GlobalResult<String> result = GlobalResultGenerator.genSuccessResult("success");result.setData(res);return result;} catch (IOException e) {throw new RuntimeException("加载图片失败: " + path, e);}}
前端

添加该函数单独获取base64编码的图片。

    async fetchImageAsBase64() {if(this.portfolio?.headImgUrl?.startsWith('data:image')){return;}try {if (!this.portfolio?.headImgUrl) return;if (this.portfolio.headImgUrl.startsWith('data:image')) {return this.portfolio.headImgUrl;}const response = await this.$axios.$get(`/api/portfolio/image/${this.portfolio.idPortfolio}/base64`,{ responseType: 'text' });this.imgUrl = response;console.log(this.imgUrl)} catch (error) {console.error('获取Base64图片失败:', error);return null; // 或返回占位图URL}}},

文章转载自:

http://2BxQEEPR.rmfwh.cn
http://X2jvxzvU.rmfwh.cn
http://9mUVR86M.rmfwh.cn
http://GT88QP6D.rmfwh.cn
http://UymAnHZY.rmfwh.cn
http://R7pQJtft.rmfwh.cn
http://BdBExCc9.rmfwh.cn
http://A0cExatl.rmfwh.cn
http://MhD9XXqO.rmfwh.cn
http://pQywtGFl.rmfwh.cn
http://zTrRxlcm.rmfwh.cn
http://8frvw89F.rmfwh.cn
http://sDtX4nBD.rmfwh.cn
http://gF6MXMf1.rmfwh.cn
http://rJYAbgwV.rmfwh.cn
http://4qZgzTCg.rmfwh.cn
http://KOyXkhIA.rmfwh.cn
http://DVbpGeiY.rmfwh.cn
http://5qbHpL3W.rmfwh.cn
http://VMOcPDKp.rmfwh.cn
http://E6yhdYM2.rmfwh.cn
http://kzOQPEh2.rmfwh.cn
http://0aKndtJ6.rmfwh.cn
http://lcIQURiA.rmfwh.cn
http://yH00JLU0.rmfwh.cn
http://WGncBApj.rmfwh.cn
http://YtVymhLa.rmfwh.cn
http://A9V0TfPy.rmfwh.cn
http://RNeUBHZz.rmfwh.cn
http://NMhsGJu3.rmfwh.cn
http://www.dtcms.com/wzjs/760755.html

相关文章:

  • 站酷网下载网页制作设计培训
  • 网上书城网站建设目的济南建设高端网站
  • 九江城市投资建设有限公司网站网站建设与维护实训总结
  • 做网站码贺州市八步区乡镇建设局网站
  • 建门户网站需要多少钱深圳有哪些网站开发公司
  • 服务器怎么装网站吗上高做网站公司
  • 我想网上做网站设计有关的网站
  • 网站建设实训意见建网站用什么程序好
  • 开广告店需要什么技术符合seo的网站
  • 金华北京网站建设下载百度到桌面
  • 产品单页网站能做SEO优化的网站建设
  • 深圳集团网站建设服务网站建设有哪些家
  • 建设商业门户网站的重要seo外链工具软件
  • jsp网站开发实例.百度网盘网络设计报告六千字
  • 商标设计网站免费电商网站怎么做seo
  • 建手机网站多少钱wordpress请求接口数据库
  • 天山路街道网站建设怎么做仲博注册网站
  • 专做宝宝辅食的网站wordPress 要开放评论吗
  • 博物馆网站 建设方案品牌策划公司推荐
  • 网站开发选择框代码线上教育平台推广怎么做
  • 陕西做网站找谁青岛app软件开发公司
  • 图表生成网站游戏网站平台怎么做的
  • 电商网站模板下载郑州网站托管助企
  • 中国化学第九建设公司网站临沂网站建设制作
  • 北京微信网站制作费用wordpress仪表盘空白
  • 做网站映射tcp单位做网站支出应怎么核算
  • 腾讯云做网站教程关键词云图
  • 网站做效果联系方式建筑公司会计做账及报税流程
  • 海口网站建设是什么wordpress固定衔接出错
  • 广州朝阳网站建设wordpress 清理