第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將圖像從圖像 URL 保存到 MySql (Spring JPA Hibernate)

將圖像從圖像 URL 保存到 MySql (Spring JPA Hibernate)

我正在工作 Spring JPA Hibernate 項(xiàng)目并希望將圖像從 Image Url 保存到 Mysql 數(shù)據(jù)庫(kù)。我正在使用從 Rest Service 獲取的圖像 URL 傳遞 Orders DTO 數(shù)據(jù)。如何將圖像 url 作為圖像保存到數(shù)據(jù)庫(kù)。我認(rèn)為我們必須首先從 Url 獲取圖像。請(qǐng)解決這個(gè)問(wèn)題。訂單DO.java@Table(name = "ORDER")public class OrderDO  implements Serializable{    @Column(name = "ORDER_NUMBER", nullable = false)    private String orderNumber;     @OneToMany(cascade = CascadeType.ALL, mappedBy="order")    private Set<OrderItemDO> items = new HashSet<>();}訂單項(xiàng)DO.java@Table(name = "ORDER_ITEM")public class OrderItemDO implements Serializable{       @Column(name = "PRODUCT_NAME",nullable = false)    private String name;    @Lob    @Column(name = "IMAGE")    private byte[] image;    @ManyToOne(cascade=CascadeType.ALL)    @JoinColumn(name="ORDER_ID", referencedColumnName="ID")    private OrderDO order;}訂單倉(cāng)庫(kù).java@Repositorypublic interface OrderRepository extends CrudRepository<OrderDO, Long>{    public Page<OrderDO> findAll(Pageable pageable);    }OrderServiceImpl.javapublic class OrderServiceImpl {    @Autowired    private ModelMapper modelMapper;    @Autowired    private OrderRepository orderRepository;    private OrderDO map(Order dto) {        OrderDO orderDO =  modelMapper.map(dto, OrderDO.class);        Set<OrderItemDO> itemsDO = new HashSet<>();        for(OrderItem item : dto.getItems()) {            OrderItemDO itemDO = map(item);            itemDO.setOrder(orderDO);            itemsDO.add(itemDO);        }        orderDO.setItems(itemsDO);              return orderDO;     }    public OrderItemDO map(OrderItem dto) {        OrderItemDO itemDO = modelMapper.map(dto, OrderItemDO.class);        return itemDO;    }    public Order SaveOrder(Order dto) {        OrderDO entity = this.map(dto);        entity = orderRepository.save(entity);        return this.map(entity);    }
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

在保存之前,您可以在 Rest Service 中將圖像 url 轉(zhuǎn)換為數(shù)據(jù)字節(jié) [] 圖像。


public static byte[] convertImageByte(URL url) throws IOException {


        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        InputStream is = null;

        try {

            is = url.openStream ();

            byte[] byteChunk = new byte[4096]; // Or whatever size you want to read in at a time.

            int n;


            while ( (n = is.read(byteChunk)) > 0 ) {

                baos.write(byteChunk, 0, n);

            }

            return byteChunk;

        }

        catch (IOException e) {

            System.err.printf ("Failed while reading bytes from %s: %s", url.toExternalForm(), e.getMessage());

            e.printStackTrace ();

            // Perform any other exception handling that's appropriate.

        }

        finally {

            if (is != null) { is.close(); }

        }

        return null;

    }


查看完整回答
反對(duì) 回復(fù) 2021-12-22
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

好的問(wèn)題解決了。將圖像 URL 轉(zhuǎn)換為字節(jié)數(shù)組的代碼如下。有關(guān)此問(wèn)題的更多答案,請(qǐng)參閱此處


public static byte[] convertImageByte(URL url) throws IOException {

    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    InputStream is = null;

    try {

        is = new BufferedInputStream(url.openStream());

        byte[] byteChunk = new byte[4096];

        int n;

        while ( (n = is.read(byteChunk)) > 0 ) {

            baos.write(byteChunk, 0, n);

        }   

        return baos.toByteArray();

    }

    catch (IOException e) {e.printStackTrace ();}

    finally {

        if (is != null) { is.close(); }

    }

    return null;

}

將 Dto 保存到數(shù)據(jù)庫(kù)時(shí)


if(dto.getImageUrl() != null) {             

    try {

    URL imageUrl = new URL(dto.getImageUrl());

    itemDO.setImage(convertImageByte(imageUrl));

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    entity = orderItemRepository.save(itemDO);

從數(shù)據(jù)庫(kù)中獲取圖像


public byte[] getImageForOrderItem(long itemId) {

    Optional<OrderItemDO> option = orderItemRepository.findById(itemId);

    if(option.isPresent()) {

        OrderItemDO itemDO = option.get();

        if(itemDO.getImage() != null) {

            byte[] image = itemDO.getImage();

            return image;

        }

    }

    return null;

}

通過(guò) Rest API 調(diào)用 Image Response


@GetMapping(path="/orderItem/image/{itemId}")

@ResponseStatus(HttpStatus.OK)

public void getImageForOrderItem(@PathVariable("itemId") long itemId, HttpServletResponse response) { 

    byte[] buffer = orderServiceImpl.getImageForOrderItem(itemId);

    if (buffer != null) {

        response.setContentType("image/jpeg");

        try {

            response.getOutputStream().write(buffer);

            response.getOutputStream().flush();

            response.getOutputStream().close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    } 

}


查看完整回答
反對(duì) 回復(fù) 2021-12-22
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)