Coldfusion Ajax Multi-File Upload - CFFile Overwriting ServerFile
我已经从这个问题中获取了一些代码用于多文件上传,它工作正常,但是
我尝试循环它,每次附加一个数组,但仍然是同样的问题。 似乎
呼叫者:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | $(document).ready(function() { $('#multiFileFrm').submit(function(event){ event.preventDefault(); $.each($('#multiFile')[0].files, function(i, file) { var formData = new FormData(); formData.append('file-0', file); ajaxUpload(formData); }); }); function ajaxUpload(formData) { console.log("ajaxUpload function called"); $.ajax({ type: 'POST', url:"ajax/AJAX_multiUploadTest.cfm", data: formData, cache: false, contentType: false, processData: false, success: function(data) { $('#callback').html(data); }, error: function(data) { console.log(data); } }); } }); <form method="post" enctype="multipart/form-data" id="multiFileFrm"> <input type="file" name="multiFile" id="multiFile" multiple="multiple" /> <input type="submit" id="submitFrm" value="Submit" /> </form> |
AJAX_multiUploadTest.cfm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <cftry> <cfobject component="code/profile" name="pro"> <cfset parm={}> <cfset parm.userID=session.visitor.user.ID> <cfset parm.database=application.datasource> <cfset parm.form=form> <cfset path="#application.directory#/data/dev/"> <cfif NOT DirectoryExists(path)><cfdirectory action="create" directory="#path#"></cfif> <cffile action="upload" filefield="file-0" destination="#path#" nameConflict="makeUnique"> <cfset upload="#application.directory#/data/dev/#cffile.serverfile#"> <cfdump var="#parm#" label="parm" expand="no"> <cfcatch type="any"> <cfdump var="#cfcatch#" label="cfcatch" expand="no"> </cfcatch> </cftry> |
哇,通过阅读我自己的帖子,我已经找到了问题。 回调文件在JavaScript循环中调用,因此每次都会覆盖变量。 为了存储所有文件名,我只是将它们存储在会话变量中:
1 | <cfset arrayAppend(session.visitor.user.tempData,"#application.domain#data/dev/#cffile.serverfile#")> |
然后输出所有上传的文件,一旦被其他函数处理,也许将它存储在数据库中,你就可以清空数组了!
希望这有助于某人:)