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

打印 上一主题 下一主题

主题 1838|帖子 1838|积分 5514

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  1. import React, {
  2.     useState } from 'react';
  3. import {
  4.     Upload, Button, Image, Carousel } from 'antd';
  5. import {
  6.     UploadOutlined } from '@ant-design/icons';
  7. const OFDUploadPreview = () => {
  8.    
  9.   const [previewImages, setPreviewImages] = useState([]);
  10.   // 自定义上传方法
  11.   const customRequest = async ({
  12.      file, onSuccess }) => {
  13.    
  14.     const formData = new FormData();
  15.     formData.append('file',  file);
  16.    
  17.     try {
  18.    
  19.       const response = await fetch('http://localhost:8080/convert-ofd',  {
  20.    
  21.         method: 'POST',
  22.         body: formData
  23.       });
  24.       
  25.       const result = await response.json();
  26.       if (result.success)  {
  27.    
  28.         setPreviewImages(result.images);  // 接收转换后的图片数组
  29.         onSuccess(result, file);
  30.       }
  31.     } catch (error) {
  32.    
  33.       console.error('Upload  failed:', error);
  34.     }
  35.   };
  36.   return (
  37.     <div style={
  38.    {
  39.     padding: 24 }}>
  40.       <Upload
  41.         customRequest={
  42.    customRequest}
  43.         accept=".ofd"
  44.         showUploadList={
  45.    false}
  46.       >
  47.         <Button icon={
  48.    <UploadOutlined />}>上传OFD文件</Button>
  49.       </Upload>
  50.       {
  51.    /* 多页预览 */}
  52.       {
  53.    previewImages.length  > 0 && (
  54.         <div style={
  55.    {
  56.     marginTop: 20 }}>
  57.           <Carousel dotPosition="top">
  58.             {
  59.    previewImages.map((img,  index) => (
  60.               <div key={
  61.    index}>
  62.                 <Image
  63.                   src={
  64.    `data:image/png;base64,${
  65.      img}`}
  66.                   alt={
  67.    `Page ${
  68.      index + 1}`}
  69.                   style={
  70.    {
  71.     maxWidth: '100%' }}
  72.                 />
  73.               </div>
  74.             ))}
  75.           </Carousel>
  76.         </div>
  77.       )}
  78.     </div>
  79.   );
  80. };
  81. export default OFDUploadPreview;
复制代码
二、后端Java实现方案(Spring Boot)

  1. @RestController
  2. @RequestMapping("/convert-ofd")
  3. public class OfdConverterController {
  4.    
  5.    
  6.     @PostMapping(consumes = MediaType
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表