前端界面根据条件动态显示图片

今天碰到了需要根据特定数据动态显示有关图片的问题(从数据库中查询处图片名称)

1、显示项目目录下的图片
html代码:

  <div id = "content" style = "background-color:white;width:900px;height:650px;margin-left:150px;margin-top:70px">    
      <img id = "fileImg" alt='' style = 'height:100%;width:100%'>
 </div>

图片所在项目目录:
在这里插入图片描述

js代码:

//点击查看图片按钮
    $("#queryFile").click(function(){
    	$("#fileImg").show()
    	console.log(fileObj)
    	var certificate = fileObj.certificate
    	console.log(certificate)
    	// 为img标签设置src属性值; '/static/img/' 为图片在项目目录下保存的路径,imgName是从数据库中查询出的图片名称,如 01.PNG  ; 
    	$("#fileImg").attr('src','/static/context/images/'+imgName)
     	
    })

2、显示服务器本地目录下的图片
因为服务器都有保护机制,不能直接从web端读取服务器本地文件,所以需要通过IO流将图片写出到前端界面显示
html代码:

  <div id = "content" style = "background-color:white;width:900px;height:650px;margin-left:150px;margin-top:70px">    
      <img id = "fileImg" alt='' style = 'height:100%;width:100%'>
 </div>

js代码:

//点击某个按钮显示图片
   $("#queryCertificate").click(function(){
    	$("#fileImg").show()
    	console.log(fileObj)
    	var certificate = fileObj.certificate
    	console.log(certificate)
    	//<img标签的src路径设置为后端的接口路径,并通过get请求向后端接口传递参数(比如文件类型和用户对应id)>
     	$("#fileImg").attr('src','/hzsh/eomc-zhch/ryzzwh/queryFile?type=img&id='+id)	
    })

后端代码:

	/**
	 * 查询用户对应图片,写出出到前端页面
	 * 
	 * @param id
	 */

	@ResponseBody
	@RequestMapping("/queryFile")
	public void queryFileByEmployeeId(HttpServletRequest request, HttpServletResponse response) {
	
		String type = request.getParameter("type");
		String id= request.getParameter("id");
		User user = new User();
	    String fileName = user.getFileName();
		// 获取对应的图片;'D:/tmp/attach/'是图片在服务器的目录
		try {
			File file = new File("D:/tmp/attach/" + fileName );
			FileInputStream fis = new FileInputStream(file);
			OutputStream out = response.getOutputStream();
			long size = file.length();
			byte[] temp = new byte[(int) size];
			fis.read(temp, 0, (int) size);
			fis.close();
			byte[] data = temp;

			if (type == "img") {
				response.setContentType("image/PNG");
			} else if (type == "doc") {
				response.setContentType("application/msword");
			}

			// response.setContentType("application/msword");
			// data = Base64.encodeBase64(data);
			out.write(data);
			out.flush();
			out.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

这里只是我在项目中遇到的两种动态显示图片的方式,只是列出了两种情况下如何显示图片,至于如何上传到项目目录或服务器本地目录,以后有空再做总结

### 回答1: 使用Vue可以通过以下步骤将图片作为前端界面背景: 1. 将图片放到Vue项目的`assets`文件夹中,比如`src/assets/images/background.jpg`。 2. 在Vue组件中,使用`style`绑定属性来设置背景图片,比如: ```html <template> <div class="container" :style="{ backgroundImage: `url(${backgroundImage})` }"> <!-- 页面内容 --> </div> </template> <script> export default { data() { return { backgroundImage: require('@/assets/images/background.jpg') } } } </script> <style> .container { background-repeat: no-repeat; background-size: cover; } </style> ``` 3. 在上面的代码中,使用了`:style`和`backgroundImage`来设置`div`元素的背景图片。`backgroundImage`是一个Vue数据属性,用来绑定`require`导入的图片路径。 4. 最后,可以通过CSS来设置背景图片的样式,比如`background-repeat`和`background-size`等。 注意:在使用`require`导入图片时,需要使用`@`符号来表示项目的根目录,比如`require('@/assets/images/background.jpg')`。 ### 回答2: 在Vue中,可以使用内联样式或动态绑定的方式将图片作为前端界面的背景。 1. 使用内联样式: 可以直接在组件中使用`style`属性,将图片路径指定为`background-image`的属性值,并设置`background-size`、`background-repeat`等样式属性,来控制图片的显示效果。例如: ```html <template> <div class="container" :style="{'background-image': 'url(' + imageUrl + ')'}"> ... </div> </template> ``` 上述代码中的`imageUrl`是一个组件的data属性,可以根据需要进行动态赋值。 2. 使用动态绑定: 可以通过计算属性或直接在模板中使用对象的属性来实现动态绑定。首先,将图片路径存储在组件的data属性中,然后在模板中使用绑定表达式来获取该属性。例如: ```html <template> <div class="container" :style="backgroundStyle"> ... </div> </template> <script> export default { data() { return { imageUrl: 'path/to/image.jpg' } }, computed: { backgroundStyle() { return { 'background-image': 'url(' + this.imageUrl + ')' } } } } </script> ``` 上述代码中,`backgroundStyle`是一个计算属性,它返回一个包含`background-image`属性的对象,从而实现了动态绑定图片路径作为背景。 无论是使用内联样式还是动态绑定,都可以根据实际需求设置其它样式属性,来调整图片的显示效果。 ### 回答3: 在Vue中,可以通过使用CSS样式来将图片作为前端界面的背景。 首先,在Vue组件的模板中,可以通过添加一个div元素来作为背景容器,例如: ```html <template> <div class="background-container"> <!-- 内容区域 --> </div> </template> ``` 然后,在对应的样式文件(通常是`.css`或`.scss`文件)中,可以为这个背景容器设置一个背景图片,例如: ```css .background-container { background-image: url(路径/图片文件名); background-size: cover; // 控制背景图片的尺寸 // 其他样式设置... } ``` 其中,`路径/图片文件名`是指背景图片文件的路径和文件名,可以是一个相对路径(相对于样式文件的位置)或者一个绝对路径。`background-size: cover`是用来控制背景图片的尺寸,可以根据实际情况调整。 通过以上步骤,就可以实现在Vue前端界面中将图片作为背景了。只需将背景图片替换为自己所需的图片,即可达到相应的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值