ColdfusionAjax多文件上传-CFFile覆盖ServerFile
Coldfusion Ajax Multi-File Upload - CFFile Overwriting ServerFile
我从这个问题中提取了一些代码用于多文件上传,这很好,但cffile
覆盖了cffile.serverFile
,所以在parm
转储中,我得到的唯一文件名是它上传的最后一个文件名,而不是所有文件名。
我试着循环它,每次都附加一个数组,但仍然存在同样的问题。似乎cffile
正在一次性上传所有选定的文件。在这个问题中,OP说他用正确的数据做出了JSON响应,但我不知道该怎么做,因为我无论如何都无法取回所有的名称。
呼叫者:
<script>
$(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);
}
});
}
});
</script>
<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>
<div id="callback"></div>
AJAX_multiUploadTest.cfm:
<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的循环中被调用,因此每次它都会覆盖变量。为了存储所有文件名,我只是简单地将它们存储在一个会话变量中:
<cfset arrayAppend(session.visitor.user.tempData, "#application.domain#data/dev/#cffile.serverfile#")>
然后输出所有上传的文件,一旦被其他函数处理,也许可以将其存储在数据库中,您可以清空数组!
希望这能帮助到某人:)
相关文章:
- 在循环中分配json值时,值被覆盖
- 谷歌地图固定位置覆盖
- 只覆盖箭头键滚动事件
- JQuery覆盖不更改单选选项
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 传单中如何在更改基层时启用/禁用覆盖层
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- HTML/CSS-用于拖放的全页面覆盖
- 让javascript知道epub3电子书中何时播放媒体覆盖
- 覆盖函数中的函数
- 无法覆盖CSS伪元素:before
- 如何覆盖原型中的事件侦听器
- 覆盖在赢得'不允许点击下面的标记,谷歌地图api v3
- 如何覆盖主干中的extend方法
- jQuery无法处理覆盖
- qoxdoo的代码覆盖工具
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- ColdfusionAjax多文件上传-CFFile覆盖ServerFile