【问题标题】:Hybris rewrite existing fileHybris 重写现有文件
【发布时间】:2019-03-22 05:42:54
【问题描述】:

我正在实施服务,应该将 csv 文件存储在 Hybris 后台,一个文件一天。 (具体流程完成后添加一行)

有什么方法可以重写该文件,因为我仍然得到的只是文件的新版本。 有这方面的文档吗?恐怕 help.hybris.com 上没有

File fileForCatalog = ... // I'm able to get that file from backoffice and add a line
Media mediaForFile = MediaManager.getInstance().createMedia(fileForCatalog.getName());
// creates new file 
mediaForFile.setFile(fileForCatalog);
mediaForFile.writeReplace(); // creates duplicate

【问题讨论】:

    标签: java file hybris


    【解决方案1】:

    我建议将媒体与 MediaService 一起使用。

    // Get media, f.e. by code
    MediaModel media = mediaService.getMedia("myMediaCode");
    InputStream oldInputStream = mediaService.getStreamFromMedia(media);
    // add your logic to add a line
    InputStream newInputStream = ...;
    mediaService.setStreamForMedia(media, newInputStream);
    

    查找Adding characters to beginning and end of InputStream in Java 以获取如何将您的行添加到输入流的示例。

    【讨论】:

      【解决方案2】:

      我认为您需要使用媒体服务和未知媒体,因为您不需要同步此媒体。

      保存不知情的媒体:

      final CatalogUnawareMediaModel media = modelService.create(CatalogUnawareMediaModel.class);
      media.setCode(name);
      media.setMime(MediaType.CSV_UTF_8.type());
      media.setRealFileName(name + "_" + new SimpleDateFormat("yyyyMMddHHmm").format(new Date()) + ".csv");
      modelService.save(media);
      mediaService.setStreamForMedia(media, IOUtils.toInputStream(buffer));
      

      您可以使用相同的 setStreamForMedia 方法来更新数据。

      【讨论】:

        猜你喜欢
        • 2014-03-26
        • 1970-01-01
        • 2014-01-18
        • 2011-11-26
        • 2016-04-14
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 2021-11-22
        相关资源
        最近更新 更多