前端展示后台服务器中图片的功能实现

Vue+Springboot

这里的按钮我是放在了table表格的末尾,目的是获取每一行中的批次号,然后根据批次号读取后台服务器的图片,并且展示在前端的dialog中。

 <el-table-column align="center" label="操作" width="211">
            <template slot-scope="scope">
              <el-button type="primary" class="el-icon-" @click="handleDisplayInformation(scope.row)">查看图片
              </el-button>
            </template>
          </el-table-column>

效果图片:

 dialog部分的代码

  <el-dialog
        title="展示测试信息"
        :visible.sync="pictureView"
        width="1000px"
        class="dialogLand"
        append-to-body
    >
      <img :src="imgSrc" alt="Sorry,图片暂时还未生成哦">
    </el-dialog>


data(){
    return{
        imgSrc: '',
        pictureView: false,

}


}

上述两个方法的代码

 handleDisplayInformation(row) {
      this.pictureView = true;
      this.getImg(row) //将这一行的所有信息传递到getImg方法中,
    },
    
    getImg(row) {
      return axios({
        url: 'http://localhost:8888/WES/getImg',
        method: 'get',
        params: {name: row.picihao}, //使用这一行信息中的批次号信息
      }).then(res => {
        if(res.data.code === '200'){
          this.imgSrc = res.data.data
        }else {
   
          this.imgSrc = null //如果不写这个,那点击不存在的图片的时候,显示的还是刚刚收到的图片
        }
      }).catch((error) =>{
        console.log(error + "errrrrrror")
      })
    },

有图片的效果图,这里只是做了个测试,图片的大小暂时还未调整

 后台服务器无图片的效果图:

 后端部分:

主要是一个接口还有个工具类,代码如下

    @GetMapping("/getImg")
    public  Result getImg(String name){

        System.out.println("获取图片数据");
        System.out.println(name + "name+++++++++++++++++++++++++++");
        String path = "D:\\" + name + ".jpg";
        File file = new File(path);
        if (!file.exists()){
            System.out.println("图片他不存在啊,应该是还没有生成呢");
            return Result.error();
        }else {
            String base64 = ImgToBase64Util.readPath("D:\\" + name + ".jpg");
//        String base64 = ImgToBase64Util.readPath("/home/SpringbootAndVue/img/" + name + ".jpg");
            return Result.success(base64);
        }

    }

工具类:

import cn.hutool.core.io.FileTypeUtil;
import cn.hutool.core.io.FileUtil;

import java.io.File;
import java.util.Base64;

public class ImgToBase64Util {
  public static String readPath(String filePath) {
    File file = new File(filePath);
    if (!file.exists()) {
      throw new IllegalArgumentException("这个图片" + filePath + "没有生成!");
    }
    byte[] bytes = FileUtil.readBytes(file);
    String base64EncodedContent = Base64.getEncoder().encodeToString(bytes);
    String type = FileTypeUtil.getType(file);

    String mimeType;
    switch (type) {
      case "jpg":
      case "jpeg":
        mimeType = "image/jpeg";
        break;
      case "png":
        mimeType = "image/png";
        break;
      case "gif":
        mimeType = "image/gif";
        break;
      case "tif":
        mimeType = "image/tiff";
        break;
      case "bmp":
        mimeType = "image/bmp";
        break;
      default:
       
        mimeType = "application/octet-stream";
    }
    return "data:" + mimeType + ";base64," + base64EncodedContent;
  }


  /**
   * 图片转base64 
   */
  public static String readPathNoHeader(String filePath) {
    File file = new File(filePath);
    if (!file.exists()) {
      throw new IllegalArgumentException("这个图片" + filePath + "不存在!");
    }
    byte[] bytes = FileUtil.readBytes(file);
    return Base64.getEncoder().encodeToString(bytes);
  }
}

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Django实现后台上传并显示图片功能需要进行以下步骤: 1. 在项目的settings.py文件,确保DEBUG设置为False。这是为了在生产环境禁用Django自带的错误页面,以增加网站的安全性和性能。 2. 首先,在models.py文件创建一个模型类,用于存储图片的相关信息,例如图片标题、描述和上传时间等。为了存储图片文件,可以使用Django自带的ImageField字段或者FileField字段。 3. 在项目的urls.py文件,创建一个URL路由,用于处理上传和访问图片的请求。 4. 在views.py文件,编写视图函数来处理上传和访问图片的逻辑。对于上传图片功能,可以使用Django自带的Form模块提供的功能来处理用户提交的图片文件。在视图函数,可以通过request.FILES属性获取到用户上传的图片文件,并通过模型类的save()方法将图片文件保存到指定的目录下。对于显示图片功能,可以通过视图函数读取存储的图片文件并返回给前端页面。 5. 在前端页面,使用HTML的form标签创建一个上传表单,设置enctype属性为"multipart/form-data",以支持文件上传。通过指定表单的action属性为后台处理上传图片的URL路由地址来提交表单,并在页面显示上传的图片。 需要注意的是,由于DEBUG设置为False,Django将不会自动提供静态文件(包括图片)的服务,因此需要在生产环境配置静态文件的服务,例如使用Nginx或者Apache等Web服务器来处理静态文件的请求。另外,还需要在settings.py文件设置STATIC_ROOT属性,指定静态文件的存放路径。 综上所述,通过以上步骤,就可以在Django实现后台上传并显示图片功能,并且确保DEBUG设置为False来提高网站的安全性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值