如何在hybris后台上传文件而不将其上传到Media?

时间:2018-05-21 08:03:35

标签: file-upload media hybris backoffice

我想在hybris后台创建一个自定义小部件,它允许从磁盘导入CSV文件,CSV文件中的数据将用于将数据插入数据库。但是,根据我的发现,hybris只允许从其媒体容器上传文件。

https://help.hybris.com/6.0.0/hcd/8babc4778669101493e3e9234f73106a.html

"默认文件上传编辑器可让您从现有媒体上传和下载二进制内容。"

这使得它非常麻烦 - 首先将文件上传到媒体,然后从Media中选择上传的文件以在我的自定义小部件中使用它。

是否可以克服此问题并直接从磁盘上传文件?

2 个答案:

答案 0 :(得分:1)

我回答了我自己的问题,有人可能会遇到类似的问题 - 似乎上面引用Hybris文档会产生误导 - 如果您使用默认文件上传编辑器,它将允许您从磁盘中选择一个文件。

e.g。 在你的小部件的zul文件中:

<editor id="yourCustomEditorId" type="java.io.File" defaultEditor="com.hybris.cockpitng.editor.defaultfileupload" />

将创建两个默认按钮 - 上传和重置

在您的控制器中,您将添加

private Editor yourCustomEditorId;

您可以从中获取FileUploadResult:

FileUploadResult fileUploadResult = (FileUploadResult) yourCustomEditorId.getValue();

答案 1 :(得分:0)

* backoffice-config.xml中的典型CSV文件配置

            <wz:property qualifier="csvFile" type="com.hybris.cockpitng.editor.defaultfileupload.FileUploadResult" 
                             editor="com.hybris.cockpitng.editor.dndfileupload" validate="false">
                    <wz:editor-parameter>
                        <wz:name>accept</wz:name>
                        <wz:value>text/csv</wz:value>
                    </wz:editor-parameter>
            </wz:property>

在操作中访问它们的典型方法(假设您正在Backoffice向导中使用模板bean)

final DefaultWidgetModel productUploadModel = (DefaultWidgetModel) adapter.getWidgetInstanceManager().getModel();

        final ProductUploadWizardForm productUpload = productUploadModel.getValue("PRODUCT_UPLOAD",
                ProductUploadWizardForm.class);

            final FileUploadResult fileUploadResult = productUploadModel
                    .getValue("PRODUCT_UPLOAD" + ".csvFile",
                    FileUploadResult.class);
LOG.info("Value of fileUploadResult.name:" + fileUploadResult.getName());

LOG.info("Print the contents->"+new String(fileUploadResult.getData(), StandardCharsets.UTF_8));