基于React + Antd + Java的OFD文件上传预览实现方案(OFD文件转图片)

一、前端实现方案(React + Antd)

import React, {
    useState } from 'react';
import {
    Upload, Button, Image, Carousel } from 'antd';
import {
    UploadOutlined } from '@ant-design/icons';
 
const OFDUploadPreview = () => {
   
  const [previewImages, setPreviewImages] = useState([]);
 
  // 自定义上传方法 
  const customRequest = async ({
     file, onSuccess }) => {
   
    const formData = new FormData();
    formData.append('file',  file);
    
    try {
   
      const response = await fetch('http://localhost:8080/convert-ofd',  {
   
        method: 'POST',
        body: formData 
      });
      
      const result = await response.json(); 
      if (result.success)  {
   
        setPreviewImages(result.images);  // 接收转换后的图片数组 
        onSuccess(result, file);
      }
    } catch (error) {
   
      console.error('Upload  failed:', error);
    }
  };
 
  return (
    <div style={
   {
    padding: 24 }}>
      <Upload 
        customRequest={
   customRequest}
        accept=".ofd"
        showUploadList={
   false}
      >
        <Button icon={
   <UploadOutlined />}>上传OFD文件</Button>
      </Upload>
 
      {
   /* 多页预览 */}
      {
   previewImages.length  > 0 && (
        <div style={
   {
    marginTop: 20 }}>
          <Carousel dotPosition="top">
            {
   previewImages.map((img,  index) => (
              <div key={
   index}>
                <Image 
                  src={
   `data:image/png;base64,${
     img}`}
                  alt={
   `Page ${
     index + 1}`}
                  style={
   {
    maxWidth: '100%' }}
                />
              </div>
            ))}
          </Carousel>
        </div>
      )}
    </div>
  );
};
 
export default OFDUploadPreview;

二、后端Java实现方案(Spring Boot)

@RestController 
@RequestMapping("/convert-ofd")
public class OfdConverterController {
   
    
    @PostMapping(consumes = MediaType
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值