Можем ли мы напрямую связать свойство класса вершины в LWC - для загрузки файла размером 25 МБ с апексом (проблема с размером кучи)?

Aug 21 2020

У меня есть компонент lwc, например:

import { LightningElement } from 'lwc';
import {saveAttachment} from '@salesforce/apex/DocumentController.saveAttachment'

export default class FileUpload extends LightningElement {

  fileSelectionHandler() {
   // some logic to get the file
  }
  
  uploadFile() {
    saveAttachment({parentId: 'a0H3I000001SsylUAC'})
    .then(() => {
     // some code here
    })
    .catch(() => {
    // some code here
    })

  }
}

и его шаблон html:

<template>
  <input type="file" onchange={fileSelectionHandler}>
  <button onclick={}>Upload</button>
</template>

И класс вершины вроде этого:

public without sharing class DocumentController {

  @AuraEnabled
  public static string saveAttachment(String parentId) {
    Attachment attach = new Attachment();
    attach.Name = 'test.pdf';
    attach.ParentId = parentId;
    // attach.Body ==> this part should come from lwc

    insert attach;
    return attach.Id;
  }
}

Мне нужно каким-то образом, чтобы мы могли напрямую подключить присоединение в классе вершины выше к шаблону, чтобы я мог напрямую получить большой двоичный объект для присоединения в классе вершины, как у нас для компонента входного файла страницы visualforce ниже

<apex:inputfile style="" value="{!attach.body}" filename="{!attach.name}" contentType="{!attach.ContentType}"/>

Здесь мы напрямую назначаем выбранный файл для attach.body. Аналогично, есть ли какой-либо файл, с помощью которого мы можем напрямую привязать attach к lwc, чтобы blob был доступен в attach.Body. Это помогло бы мне загружать большие вложения, например до 25 МБ, не затрагивая проблему размера кучи с помощью apex.

Любая помощь будет принята с благодарностью. Заранее спасибо.

Обратите внимание: поскольку я использую осветление, здесь нельзя использовать загрузку файла-молнии

Ответы

1 sfdcfox Aug 21 2020 at 00:59

Вам придется использовать какой-то API. Apex имеет ограничение кучи 6 МБ, поэтому вы столкнетесь с ним независимо (прямая привязка не поможет), а также есть максимальный размер полезной нагрузки (4 МБ), поэтому самый большой файл, который вы разумно загрузите, составляет около 3 МБ, включая base64 кодирование.