小Hello先生 2024-06-20 11:05 采纳率: 95.5%
浏览 6
已结题

通过图片id请求后端服务,将图片渲染到页面,渲染不成功?

通过图片id请求后端服务,将图片渲染到页面,渲染不成功?
前端通过src动态请求:

<image class="cover"
        :src=" ' http://localhost:3333/view/2fe83c0671114afe8fa8cc23d2afded1_1.png' ">
</image>

后端相应地址代码:

@GetMapping("/view/{file}")
    public void view(@PathVariable String file, HttpServletResponse response) throws IOException {
        int index = file.lastIndexOf(".");
        if (index >= 0) {
            HttpUtils.setPreviewHeader(response, file.substring(index + 1));
        } else {
            HttpUtils.setPreviewHeader(response, "*");
        }
        FileInputStream fileInputStream = new FileInputStream("files/" + file);
        HttpUtils.setContentLength(response, fileInputStream.available());
        StreamUtils.copy(fileInputStream, response.getOutputStream());
        fileInputStream.close();
    }
  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-06-20 11:11
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的信息,我们可以从以下几个方面来排查问题:

    1. 前端代码中的:src属性

    在Vue模板中,动态绑定的:src属性应该使用v-bind指令,而不是直接在HTML属性中使用。您的代码示例中,:src属性的写法有误。正确的写法应该是:

    <image class="cover" v-bind:src="'http://localhost:3333/view/2fe83c0671114afe8fa8cc23d2afded1_1.png'"></image>
    

    或者使用简写:

    <image class="cover" :src="imageUrl"></image>
    

    然后在Vue实例中定义imageUrl数据属性:

    data() {
      return {
        imageUrl: 'http://localhost:3333/view/2fe83c0671114afe8fa8cc23d2afded1_1.png'
      };
    }
    

    2. 后端服务的路径变量解析

    您的后端代码中使用@GetMapping("/view/{file}")来接受路径变量file,这部分看起来是正确的。但是,确保file变量能够正确解析并传递到方法中。

    3. 文件路径和文件存在性

    检查"files/" + file路径是否正确指向存储图片的位置,并且确保文件确实存在于该路径下。

    4. 响应头和内容长度设置

    HttpUtils.setPreviewHeaderHttpUtils.setContentLength方法调用看起来是正确的,但是需要确保HttpUtils工具类中的实现没有问题。

    5. 文件内容复制

    StreamUtils.copy用于将文件内容复制到响应的输出流中,确保这个方法调用没有异常。

    6. URL匹配和跨域问题

    确保前端请求的URL与后端配置的路由匹配,并且后端服务配置了适当的CORS(跨源资源共享)策略,以允许前端应用访问后端资源。

    7. 其他可能的问题

    • 检查浏览器控制台是否有错误信息。
    • 确保服务器运行正常,没有遇到内部错误。
    • 如果图片很大,检查是否有超时设置影响文件传输。

    最后,如果问题依然存在,建议逐步调试,比如在后端打印出file变量的值,确认它是否如预期那样被解析。同时,检查前端请求的URL是否完全符合后端的路由配置。希望这些建议能帮助您解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵