У нас есть требование для предварительного просмотра соответствующего файла в компоненте lwc. Что-то похожее на модальное диалоговое окно, которое отображает файл, если это известный формат для браузера (например, pdf или jpg).

Я знаю, что файл связан через contentLink, а затем полностью до contentVersion.

Но когда я перемещаюсь по полям contentLink, мне не кажется, что для этой цели есть поле.

Поле VersionData - это ссылка, которую можно использовать в рабочей среде, но, похоже, она не может напрямую открыть ее в URL-адресе.

Поля ContentUrl пусты для всех моих файлов в моей текущей организации.

Как мне этого добиться?

2
Lance Shi 16 Дек 2019 в 05:46
Пробовали ли вы использовать относительный URL-адрес "/sfc/servlet.shepherd/version/download/contentversionid" Все, что вам нужно, это идентификатор версии контента.
 – 
Mohith Shrivastava
16 Дек 2019 в 06:08
Есть ли версия для предварительного просмотра вместо загрузки?
 – 
Lance Shi
16 Дек 2019 в 06:10
Я думаю, если вы поместите это в тег изображения, это даст вам предварительный просмотр
 – 
Mohith Shrivastava
16 Дек 2019 в 06:12
Извините, возможно, я был глуп здесь. Но я все еще не совсем уловил это. Как мне поставить тег изображения? Изменив загрузку в ссылке на изображение?
 – 
Lance Shi
16 Дек 2019 в 06:15
Я думал, что вы можете просто поместить URL-адрес в тег изображения html, используя атрибут src. В любом случае, я думаю, что тот, что у меня есть в ответ, может быть более прямым и лучшим подходом.
 – 
Mohith Shrivastava
16 Дек 2019 в 06:36

1 ответ

Лучший ответ

Вот нативный подход, задокументированный отделом продаж

Используйте собственный навигационный миксин для предварительного просмотра файлов.

https://developer.salesforce.com/docs/component-library/documentation/lwc/lwc.use_open_files

Служба навигации открывает предварительный просмотр одного или нескольких файлов в модальном диалоговом окне в Lightning Experience или инициирует загрузку файла в приложении Salesforce на мобильных устройствах.

Пример в вашем случае будет таким, как показано ниже

<!-- openFileSample.html -->
<template>
 <div>
   <a onclick={navigateToFiles}>Navigate To File</a>
 </div>
</template> 

Код JS

// openFileSample.js
import { LightningElement } from 'lwc';
import { NavigationMixin } from 'lightning/navigation';

 export default class OpenFileSample extends NavigationMixin(LightningElement) {

navigateToFiles() {
  this[NavigationMixin.Navigate]({
    type: 'standard__namedPage',
    attributes: {
        pageName: 'filePreview'
    },
    state : {
        selectedRecordId:'contentDocumentId'
     }
   })
  }

}

ContentDocumentId можно получить, запросив объект ContentVersion.

2
Mohith Shrivastava 16 Дек 2019 в 06:30