sales force 数据存储问题

Apex heap size too large的问题要怎么解决?现在有一个网页,可以上传图片文件,但是超出25MB的时候就报这个错了。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    解决问题的一种方法是在Salesforce中使用分段上传。这样可以将大文件分成较小的块,然后逐个上传这些块。以下是详细步骤:

    1. 在Visualforce页面中添加一个文件上传字段,以便用户可以选择要上传的文件。
    <apex:page>
        <apex:form>
            <apex:inputFile value="{!file}" />
            <apex:commandButton action="{!uploadFile}" value="Upload" />
        </apex:form>
    </apex:page>
    
    1. 在Apex控制器中,创建一个方法用于上传文件。
    public class FileUploadController {
        public Blob file { get; set; }
    
        public void uploadFile() {
            if(file.size() > 25000000) { // 检查文件大小是否超过25MB
                // 如果文件超过25MB,将文件分成较小的块,并逐个上传
                Integer blockNumber = 1;
                Integer totalBlocks = (file.size() + 1048575) / 1048576; // 计算总块数
                Integer offset = 0;
                Integer blockSize = 1048576; // 每块大小为1MB
    
                while(offset < file.size()) {
                    Blob block = file.mid(offset, blockSize); // 将文件分成块
    
                    // 使用自定义的上传方法上传块(如: 上传到Amazon S3或Salesforce文件)
                    uploadBlockToDestination(blockNumber, totalBlocks, block);
    
                    offset += blockSize;
                    blockNumber++;
                }
            } else {
                // 如果文件大小未超过25MB,直接上传整个文件
                // 使用自定义的上传方法上传整个文件
                uploadWholeFile(file);
            }
        }
    
        // 自定义方法:上传块到目标位置
        private void uploadBlockToDestination(Integer blockNumber, Integer totalBlocks, Blob block) {
            // 上传块到目标位置的逻辑(如: 上传到Amazon S3或Salesforce文件)
        }
    
        // 自定义方法:上传整个文件
        private void uploadWholeFile(Blob file) {
            // 上传整个文件到目标位置的逻辑(如: 上传到Amazon S3或Salesforce文件)
        }
    }
    

    请注意,上述代码中使用的 uploadBlockToDestination()uploadWholeFile() 方法是示例方法,需要根据实际需求进行实现。例如,可以使用Amazon S3或Salesforce文件等服务进行文件上传。

    这种分段上传方法可以帮助解决Apex heap size too large错误,因为它将大文件分成较小的块,并分批进行上传。这样可以避免一次性加载整个文件内容,从而减少Apex堆大小的压力。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^