springboot+js实现图片预览,图片以blob类型存入数据库中

实体类:

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import javax.persistence.Lob;
import java.sql.Blob;

@TableName("PBMS_CQRJL")
@Data
public class PbmsCqrjlBean {



    /**
     * id
     */
    private String id;


    /**
     * 虫情图片
     */
    @Lob    //此注解会将blob类型数据映射为byte[]类型
    private byte[] image;
}

controller层:

    @GetMapping("/keepView")
    public ResponseEntity<String> keepView(@RequestParam("id") String id) throws IOException, SQLException {
        //假设这是你从服务层获得到的图片byte[]
        byte[] imageData = cqInfoService.keepView(id);

        if (imageData == null) {
            return ResponseEntity.notFound().build();
        }
        String base64String = Base64.getEncoder().encodeToString(imageData);
        return ResponseEntity.ok()
                .contentType(MediaType.TEXT_PLAIN) // 根据BLOB数据的实际类型选择合适的MIME类型
                .body(base64String);
    }

html:

<img id="img-url" src="" style="width: 100%;"/>

js文件:

//数据交互可自行选择,例如axios
$.ajax({
        url: "/web_cq/keepView",
        type: "GET",
        data: {id:element.dataset.image},
        success: function (response) {
            console.log("回调结果",response);
            // 将Base64字符串解码为二进制数据
            const binaryString = atob(response);
            const len = binaryString.length;
            const bytes = new Uint8Array(len);

            for (let i = 0; i < len; i++) {
                bytes[i] = binaryString.charCodeAt(i);
            }
            const blob = URL.createObjectURL(
                new Blob([bytes], {type: 'image/png'})
            );
            const imagePreview = document.getElementById('img-url');
            imagePreview.src = blob;
        },
        error: function () {
            openErrorView("操作失败,请重试!");
        }
    });

实现Spring Boot和Vue.js实现PDF预览,你需要完成以下步骤: 1. 创建一个Spring Boot项目,并在该项目添加一个REST API来获取PDF文件的二进制数据。 2. 使用Vue.js创建一个前端应用程序,并在该应用程序添加一个PDF预览组件。 3. 当用户在Vue.js应用程序选择要查看的PDF文件时,使用Axios或类似的JavaScript库从Spring Boot REST API获取PDF文件的二进制数据。 4. 将获取的二进制数据传递给PDF预览组件,以便用户可以在应用程序查看PDF文件。 以下是实现步骤的更详细说明: 1. 创建一个Spring Boot项目并添加一个REST API 首先,你需要创建一个Spring Boot项目,并在该项目添加一个REST API,以便Vue.js应用程序可以通过该API获取PDF文件的二进制数据。 在Spring Boot项目,你可以使用Spring MVC来创建REST API。以下是一个简单的Spring MVC控制器示例,它返回PDF文件的二进制数据: ```java @RestController @RequestMapping("/api") public class PdfController { @GetMapping(value = "/pdf", produces = MediaType.APPLICATION_PDF_VALUE) public ResponseEntity<byte[]> getPdf() throws IOException { // 从文件系统或数据库读取PDF文件的二进制数据 byte[] data = Files.readAllBytes(Paths.get("/path/to/pdf/file.pdf")); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_PDF); headers.setContentDisposition(ContentDisposition.builder("inline").filename("file.pdf").build()); return new ResponseEntity<>(data, headers, HttpStatus.OK); } } ``` 在上面的示例,我们创建了一个`PdfController`控制器,该控制器提供了一个`/api/pdf`端点,以获取PDF文件的二进制数据。在`getPdf()`方法,我们读取PDF文件的二进制数据,并将其包装在一个`ResponseEntity<byte[]>`对象,以便可以将其返回给Vue.js应用程序。 2. 创建Vue.js应用程序并添加PDF预览组件 接下来,你需要使用Vue.js创建一个前端应用程序,并在该应用程序添加一个PDF预览组件。 以下是一个简单的Vue.js组件示例,它显示了如何在Vue.js应用程序添加PDF预览功能: ```html <template> <div> <embed :src="pdfUrl" type="application/pdf" width="100%" height="600px" /> </div> </template> <script> import axios from 'axios'; export default { name: 'PdfViewer', data() { return { pdfUrl: '', }; }, mounted() { // 获取PDF文件的二进制数据并将其转换为Blob对象 axios.get('/api/pdf', { responseType: 'blob' }).then(response => { const file = new Blob([response.data], { type: 'application/pdf' }); const fileUrl = URL.createObjectURL(file); // 将Blob URL设置为PDF预览组件的src属性 this.pdfUrl = fileUrl; }); }, }; </script> ``` 在上面的示例,我们创建了一个名为`PdfViewer`的Vue.js组件,该组件使用`<embed>`标签来显示PDF文件。在`mounted()`生命周期钩子,我们使用Axios从Spring Boot REST API获取PDF文件的二进制数据,并将其转换为Blob对象。然后,我们使用`URL.createObjectURL()`方法将Blob对象转换为Blob URL,并将其设置为`<embed>`标签的`src`属性,以便可以在Vue.js应用程序预览PDF文件。 3. 获取PDF文件的二进制数据 当用户在Vue.js应用程序选择要查看的PDF文件时,我们需要使用Axios或类似的JavaScript库从Spring Boot REST API获取PDF文件的二进制数据。 以下是一个简单的示例,它显示了如何使用Axios从Spring Boot REST API获取PDF文件的二进制数据: ```javascript import axios from 'axios'; axios.get('/api/pdf', { responseType: 'blob' }).then(response => { // 将二进制数据传递给PDF预览组件 }); ``` 在上面的示例,我们使用Axios从Spring Boot REST API获取PDF文件的二进制数据,并在响应使用`responseType: 'blob'`选项来指定响应数据的类型Blob对象。然后,我们可以将获取的二进制数据传递给PDF预览组件。 4. 将二进制数据传递给PDF预览组件 最后,我们需要将获取的二进制数据传递给PDF预览组件,以便用户可以在应用程序查看PDF文件。 在Vue.js应用程序,我们可以使用Vue.js的组件间通信功能来实现这一点。以下是一个简单的示例,它显示了如何将获取的二进制数据传递给PDF预览组件: ```html <template> <div> <PdfViewer :pdfData="pdfData" /> </div> </template> <script> import PdfViewer from './PdfViewer.vue'; import axios from 'axios'; export default { name: 'App', components: { PdfViewer, }, data() { return { pdfData: null, }; }, methods: { loadPdf() { axios.get('/api/pdf', { responseType: 'blob' }).then(response => { // 将二进制数据传递给PDF预览组件 this.pdfData = response.data; }); }, }, mounted() { this.loadPdf(); }, }; </script> ``` 在上面的示例,我们创建了一个名为`App`的Vue.js组件,并在该组件添加了一个名为`PdfViewer`的子组件。在`loadPdf()`方法,我们使用Axios从Spring Boot REST API获取PDF文件的二进制数据,并将其存储在`pdfData`变量。然后,我们将`pdfData`变量传递给`PdfViewer`子组件,以便PDF预览组件可以在应用程序显示PDF文件。 总结: 以上就是Spring Boot和Vue.js实现PDF预览的步骤。首先,我们需要创建一个Spring Boot项目,并在该项目添加一个REST API,以便Vue.js应用程序可以通过该API获取PDF文件的二进制数据。然后,我们使用Vue.js创建一个前端应用程序,并在该应用程序添加一个PDF预览组件。最后,我们使用Axios或类似的JavaScript库从Spring Boot REST API获取PDF文件的二进制数据,并将其传递给PDF预览组件,以便用户可以在应用程序查看PDF文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值