首页 > 其他分享 >Salesforce input 标签 成熟文件上传方案,

Salesforce input 标签 成熟文件上传方案,

时间:2023-10-07 10:26:25浏览次数:37  
标签:files Salesforce contentVersionRec length let file input 上传

这次项目开发由于客户要求无法使用lwc标准的文件上传标签只能只能使用input标签来上传文件。下面是试验成功的方案。

注意:只能上传3mb文件,salesforce限制。也希望看到的文章大神们指点一下。

前端html

<input autocomplete="off"
                            style="padding: 0;display:none;"
                            type="file" id="file" name="file" 
                            onchange={handleFileChanges}
                             accept="image/*,.pdf,.txt,.rtf,.doc,.docx,.xls,.xlsx,.ppt,.pptx" multiple />

  javascript 方法 

    //base64 方法
    handleFileChanges(event) {
        // this.uploadedFileList = [];
        const fileMaxSize = 1024 * 1024 * 3;
        var overSize = false;
        var emptyFile = false;
        this.fileUploadProgress = true;
        let files = event.target.files;
        if (files.length > 0) {
            for (let i = 0; i < files.length; i++) {
                let file = files[i];
                if(file.size < fileMaxSize && file.size > 0){
                    this.uploadedFileList.push({name:file.name,url:i});
                }else{
                    overSize = true;
                }
 
                if(file.size == 0){
                    emptyFile = true;
                }
            }
 
            if(overSize == true){
                this.showToast('error','ERROR','小于3mb');
                return;
            }
 
            if(emptyFile == true){
                this.showToast('error','ERROR','空文件');
                return;
            }
 
            for (let i = 0; i < files.length; i++) {
                let file = files[i];
                let freader = new FileReader();
                freader.onload = f => {
                    let base64 = 'base64,';
                    let content = freader.result.indexOf(base64) + base64.length;
                    let fileContents = freader.result.substring(content);
                    if(file.size < fileMaxSize){
                        this.filesUploaded.push({
                            Title: file.name,
                            VersionData: fileContents
                        });
                    }
                };
                freader.readAsDataURL(file);
            }
        }
    }

  

文件上传的时候由于想上传多个就需要每个文件都执行一次insert文件方法,

注意:一定要使用 async 和 await 等待每个文件上传成功后执行

    async handleInsertFileMethod(){
        this.countFileUploadSuccess = [];
        for (let index = 0; index < this.filesUploaded.length; index++) {
            const element = this.filesUploaded[index];
            const finalResult = await insertPartnerOrderFile({filesToInsert: element,partnerOrderId:this.partnerOrderId});
            if(finalResult){
                if(finalResult.status == 'success'){
                    this.countFileUploadSuccess.push(1);
                    if(this.countFileUploadSuccess.length == this.filesUploaded.length){
                        
                    }
                }else if(finalResult.status == 'fail'){
                    this.countFileUploadSuccess.push(1);
                    this.showToast('error','ERROR',finalResult.error);
                    if(this.countFileUploadSuccess.length == this.filesUploaded.length){
                       
                    }
                }
            }
        }
    }

  apx方法如下

    @AuraEnabled
    public static Map<String, Object> insertPartnerOrderFile(Object filesToInsert,String partnerOrderId){
        Map<String, Object> resMap = new Map<String, Object>();
        try {
            FileInfoWrapper fileData = (FileInfoWrapper)JSON.deserialize(JSON.serialize(filesToInsert), COP_PartnerOrderCreateCtrl.FileInfoWrapper.class);
            ContentVersion contentVersionRec = new ContentVersion();  
            contentVersionRec.Title = fileData.Title;  
            // contentVersionRec.ContentLocation = 'S'; 
            contentVersionRec.PathOnClient =  fileData.Title;  
            contentVersionRec.FirstPublishLocationId = partnerOrderId;  
            contentVersionRec.VersionData =fileData.VersionData;  
            contentVersionRec.IsMajorVersion = true;  
            insert contentVersionRec;
            resMap.put('status', 'success');
            return resMap;
        } catch (Exception e) {
            resMap.put('status', 'fail');
            resMap.put('error', e.getMessage()+'\n'+e.getStackTraceString());
        }
        return resMap;
    }

    //文件内容传输内部class
    public class FileInfoWrapper {
        public String Title;
        public Blob VersionData;
    }

  

标签:files,Salesforce,contentVersionRec,length,let,file,input,上传
From: https://www.cnblogs.com/salesforcelizhi/p/17745660.html

相关文章

  • 视频直播源码,js判断上传图片格式类型、尺寸大小
    视频直播源码,js判断上传图片格式类型、尺寸大小 /判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")ret......
  • SpringMVC 文件上传
    SpringMVC文件上传<!--支持文件上传--><beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--maxUploadSizePerFile:单个文件大小限制maxUploadSize:整个请求大小限制--><propert......
  • git config --global core.autocrlf input
    我们一般希望远程仓库中的代码为LF,就用: gitconfig--globalcore.autocrlfinput 就ok了。 gitconfig--globalcore.autocrlfinput这是一个Git的配置命令,它的作用是告诉Git在检出代码时不要自动将行尾转换为CRLF(Windows风格的换行符),而是保留原来的LF(Unix风格的换行符)。......
  • 无涯教程-OC - Input types - TextFields函数
    键盘输入类型可帮助无涯教程从用户那里获得所需的输入。无涯教程可以使用UITextField的keyboard属性设置用户可以提供的输入类型。Inputtypes-键盘输入类型Sr.No.InputType&描述1UIKeyboardTypeASCIICapable键盘包括所有标准ASCII字符。2UIKeyboardTypeNumber......
  • uniapp微信小程序如何处理input输入空格问题?
    第一种方法用input组件自带的@input事件使用@input事件绑定变量用trim修剪掉前端和末尾的空格后用replace替换空格为空把处理过的值赋给自己<inputtype="text"class=""v-model="certNo"placeholder="请输入您的证书编号"@blur="certNo=certNo.trim().replace(/\s+/g,''......
  • uniapp微信小程序如何处理input输入空格问题?
    第一种方法用input组件自带的@input事件使用@input事件绑定变量用trim修剪掉前端和末尾的空格后用replace替换空格为空把处理过的值赋给自己<inputtype="text"class=""v-model="certNo"placeholder="请输入您的证书编号"@blur="certNo=certNo.trim().replace(/\s+/g,''......
  • 本地仓库通过git上传到gitee远程仓库
    1.本地新建vue3项目(vue-cli)2.gitee上新建远程仓库2.1.只选master一个分支2.2.新建的gitee远程仓库生成两个文件远程:2.3.把远程仓库的这两个文件下载并复制到本地项目文件中本地:tips:此时,gitee远程仓库里的文件被手动同步到了本地仓库项目文件夹中3.用命令行把本地仓......
  • Git 代码上传和下载
    设置问用户名和邮箱后使用以下命令,下载线上代码gitclone[代码URL]上传代码gitadd-Agitcommit-m[文件名称]gitpush-uoriginmaster ......
  • 文件上传和本地存储
    文件上传是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。文件上传前端页面三要素:①上传类型必须是file②提交方式必须是post③上传编码类型必须是multipart/form-data服务端接收文件形式: 在前端发送过请求后,服务端会接受数据并将数据存放在指......
  • mybatis出现错误 java lang NumberFormatException:For input string:A1
    使用mybatis,当使用map传参并且在iftest判断时使用map中所传的参数时,可能会产生如题的报错,具体报错信息见下图:分析这个错误,自己调试也找过度娘,“坚信”自己代码并没问题,但是问题始终无法解决。最后在一个帖子看到说iftest判断时,传入的参数跟匹配的值类型必须一致,于是调整了自己代......