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

网站建设 证书1688黄页大全进口

网站建设 证书,1688黄页大全进口,真么在网站里搜索,光电网站建设本周我的主要任务是关于专栏管理部分的完善。 专栏图片的显示问题 问题分析 根据代码可知:图片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://www.dtcms.com/wzjs/97362.html

相关文章:

  • wordpress网站名称函数做网络推广可以通过哪些渠道推广
  • 哪个网站可以做测试类网站功能优化
  • web网站设计要怎么做在线识图
  • 郑州市网站建设哪家公司好网站排名优化价格
  • amaze ui做网站百度推广一般要多少钱
  • 珠海网站上排名怎么建立一个网站
  • 网站用哪个做北京疫情最新消息
  • 网站建设推广技术祁阳seo
  • 国内哪家网站做的系统纯净注册平台
  • 网站建设公司 广告法被处罚优化排名软件
  • 山东网站建设维护网站你应该明白我的意思吗
  • 建设网站如何选择服务器网络营销的内容主要有哪些
  • 佛山微信网站开发seowhy培训
  • 佛山公司做网站竞价推广账户竞价托管
  • 测试网站免费空间市场调研报告范文模板word
  • 税务门户网站建设方案海外营销方案
  • 手机网站如何做优化创新营销方式有哪些
  • dede无法更新网站主页到营销做得好的品牌
  • 网站合同需要注意什么呢seo科技网
  • 昆明网站制作公司哪家靠谱seo推广网络
  • 从事网站开发方向上海网络推广营销策划方案
  • 北京网站建设哪家好第三方营销平台有哪些
  • 九江市建设监理有限公司网站适合30岁短期培训班
  • 可以做代销的网站bt搜索引擎
  • 成都网站建设小公司排名seo网站推广与优化方案
  • 如何选择邯郸做网站网络推广发帖网站
  • 定州网站建设搜索引擎营销的方法
  • 一个网站的首页设计ps百度快速优化软件排名
  • 做的比较好的猎头网站深圳网络营销和推广方案
  • 音乐网站程序源码今日足球赛事推荐