首页 > 解决方案 > ColdFusion uploadall,上传多个文件,AJAX,插入MySQL表

问题描述

我是 ColdFusion 的新手。我正在尝试将多个文件上传到 MySQL 数据库中。不幸的是,只有一个文件被插入而不是多个。如何插入多个文件?我需要将我的数据库插入包含在 cfloop 中吗?这是我的代码......

这是 HTML 部分。我也在使用引导文件输入

<div class="form-group">
    <div class="file-loading">                      
        <input name="buttonAction" type="file" value="Upload File" 
          title="Upload File" id="UploadFile" data-browse-on-zone-click="true" 
          accept=".pdf,.txt,.doc,.docx,.pptx,.xls,.xlsx, .rtf, .msg,.jpg,.png,.gif,.tiff" multiple> 
        </input><br><br>
    </div>
</div>

这是我表单上的上传点击事件...


        $("#UploadFile").click(function() {

            $('#UploadFile').fileinput('upload');
            var model_data = $("#frmIssue").serializeArray();
            $.each(model_data,function(key,input)
            {
                formData.append(input.name,input.value);
            });

             for (var value of formData.values()) {
                console.log(value); 
                }   

            var formData = new FormData(document.getElementById("frmIssue"));

            $.ajax({
                    url: 'FileUtility.cfc?method=uploadFiles&fkIssueId=#tmpIssueUUID#&fkUserId=#me.getId()#',
                    type: 'POST',
                    data: formData,
                    enctype: 'multipart/form-data',
                    processData: false,
                    contentType: false
            }).done(function(response){
                    document.getElementById('thisAttachment').value="";
                    $('#results').empty();
                    $('#results').load('<cfoutput>#root#</cfoutput>page.viewattachments',{'tmpIssueID':'<cfoutput>#tmpIssueUUID#</cfoutput>','pid':'<cfoutput>#URL.pid#</cfoutput>'});
                    //alert("Attachment loaded successfully.");
                    $('#alertModalTitle').html('Attachment loaded successfully.');
                    $('#alertModalBody').html('All attachments are listed below');
                    $('#alertModalFooter').html('');
                    $('#alertModal').modal('show');

            }).fail(function(jqXHR,textStatus,errorMessage){
                    $('#results').empty();
                    $('#results').html(errorMessage);
                    //alert("Attachment unsuccessful.\n"+errorMessage);
                    $('#alertModalTitle').html('Attachment error:');
                    $('#alertModalBody').html(errorMessage);
                    $('#alertModalFooter').html('');
                    $('#alertModal').modal('show');
            });
        });


我的 AJAX 调用是在 FileUtility.cfc 文件中对这个函数进行的,用 ColdFusion 编写...

<cffunction name="uploadFiles" access="remote" output="false" returntype="String">
        <cfargument name="fkIssueId" type="string" required="true" default="" />
        <cfargument name="fkUserId" type="string" required="true" default="" />

        <cfset var mypath = "" />       
        <cfset var mydirectory = "C:\ColdFusion10\cfusion\wwwroot\MyApp\attachments" />     
        <cfset var mypathtemp = "" />
        <cfset var newfile = "" />
        <cfset var newfilename = "" />
        <cfset var newfileext = "" />
        <cfset var strOriginalFile = "" />
        <cfset var strOriginalFileExt = "" />
        <cfset var strOriginalFileName = "" />
        <cfset var strUploadedNewFile = "" />
        <cfset var strUploadedNewFileExt = "" />
        <cfset var strUploadedNewFileName = "" />

        <cfset mypath = #mydirectory# & "\" & #arguments.fkIssueId# & "\"  />
        <cfif NOT directoryExists("#mypath#")>
            <cfdirectory directory="#mypath#" action="create" />
        </cfif>

        <cfset mypathtemp = #mydirectory# & "\" & #arguments.fkIssueId#  & "\" & #arguments.fkUserId# & "\"  />
        <cfif NOT directoryExists("#mypathtemp#")>
            <cfdirectory directory="#mypathtemp#" action="create" />
        </cfif>

        <cffile action="uploadall" destination="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#" nameconflict="makeunique" result="myupload" />
        <cfset str.STATUS = 200 />
        <cfset str.Message = "Passed" />
        <cfoutput>#SerializeJSON(str)#</cfoutput>


        <cfset strUploadedNewFileExt = myupload[1].ServerFileExt>
        <cfset strUploadedNewFile = getCleanedUpFile(file=myupload[1].ServerFile) />
        <cffile action="rename" source="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#myupload[1].ServerFile#" destination="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#strUploadedNewFile#" />

        <cfset strUploadedNewFileName = #reverse(listRest(reverse(strUploadedNewFile),"."))#>
        <cfset bdoesExist = #doesFileNameExist(fkIssueId=arguments.fkIssueId,file=strUploadedNewFile)#>

        <cfif #doesFileNameExist(fkIssueId=arguments.fkIssueId,file=strUploadedNewFile)# gt 0>
            <cfset iFileName = getFileName(file=strUploadedNewFile,fkIssueId=arguments.fkIssueId) />
            <cfset iFile = getFile(file=strUploadedNewFile,fkIssueId=arguments.fkIssueId) />

            <cfset strOriginalFileExt = #strUploadedNewFileExt# />
            <cfset strOriginalFile = #strUploadedNewFile# />
            <cfset strOriginalFileName = #strUploadedNewFileName# />

            <cfset iTotalCount = getFileCount(file=iFile,fkIssueId=arguments.fkIssueId) />

            <cfif #iTotalCount#>
                <cfset newCount = #iTotalCount# + 1>
            <cfelse>
                <cfset newCount = 1>
            </cfif>

            <cfset newfile = "#iFileName#_V#NumberFormat(newcount,'0000')#.#strOriginalFileExt#">
            <cfset newfilename = "#iFileName#_V#NumberFormat(newcount,'0000')#">
            <cfset newfileext = #strUploadedNewFileExt#>

            <cffile action="rename" source="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#strUploadedNewFile#" destination="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#newfile#" />
            <cffile action="move" source="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#newfile#" destination="#mydirectory#\#arguments.fkIssueId#\#newfile#" />

            <cfdirectory directory="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#" action="delete" />

            <cfset strOriginalFile = iFile />
            <cfset strOriginalFileName = iFileName />

        <cfelse>
            <cfset strOriginalFile = #strUploadedNewFile#>
            <cfset strOriginalFileExt = #strUploadedNewFileExt#>
            <cfset strOriginalFileName = #strUploadedNewFileName#>
            <cfset newfile = #strUploadedNewFile#>
            <cfset newfilename = #strUploadedNewFileName#>
            <cfset newfileext = #strUploadedNewFileExt#>
            <cffile action="move" source="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#\#newfile#" destination="#mydirectory#\#arguments.fkIssueId#\#newfile#" />
            <cfdirectory directory="#mydirectory#\#arguments.fkIssueId#\#arguments.fkUserId#" action="delete" />

        </cfif>

        <cfquery>
            INSERT INTO tbl_attachments
            (
                id,
                Attachment,
                AttachmentName,
                AttachmentExt,
                OrigAttachment,
                OrigAttachmentName,
                fkIssueId,
                final,
                fkUserId,
                Dateuploaded
                )
            VALUES (
                '#CreateUUID()#',
                '#newfile#',
                '#newfilename#',
                '#newfileext#',
                '#strOriginalFile#',
                '#strOriginalFileName#',
                '#arguments.fkIssueId#',
                0,
                '#arguments.fkUserId#',
                #createodbcdatetime(now())#
                )
        </cfquery>
    </cffunction>

先谢谢了。。。。

标签: htmlajaxcoldfusioncoldfusion-10

解决方案


推荐阅读