gpt4 book ai didi

javascript - 如何使用 Jodit uploader 和 coldfusion 上传图片?

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:42 25 4
gpt4 key购买 nike

我正在使用 Jodit创建一个所见即所得的编辑器。我有一个空的 coldfusion 文件 (uploadimage2.cfm)。当我将上传的 img 发送到那个空的 coldfusion 页面时,我收到一条错误消息,提示 coldfusion 找不到变量“FILES”。

Jodit 正在将以下表单数据发送到 uploadimage2.cfm:

------WebKitFormBoundaryIrkl9oNQedwACmBe
Content-Disposition: form-data; name="path"


------WebKitFormBoundaryIrkl9oNQedwACmBe
Content-Disposition: form-data; name="source"

default
------WebKitFormBoundaryIrkl9oNQedwACmBe
Content-Disposition: form-data; name="files[0]"; filename="HandShake.JPG"
Content-Type: image/jpeg


------WebKitFormBoundaryIrkl9oNQedwACmBe--

似乎 coldfusion 卡在了 name="files[0]"部分。我有一个不使用 Jodit 的工作上传功能,它发送 name="image"代替它。

我无法拦截表单数据以尝试在 Jodit 发送时重命名它。

这是我的带有 Jodit 插件的 javascript:

var editor = new Jodit('#newEditor',
uploader: {
url: "uploadimage2.cfm",
filesVariableName: "image"
}
);

如何发送正确的 Coldfusion 表单数据而不引发错误?

最佳答案

最终我发现我的问题出在我的 application.cfc 文件中。 onRequest 函数试图评估 "files[0]" 以确保其中没有脚本注入(inject)。这用于其他表单文本上传。

以下是我如何让 Jodit 上传以完整地使用 coldfusion:

我的 uploadimage2.cfm 文件:

<!--- set content type to json so jodit can read the response --->
<cfheader name="Content-Type" value="application/json">

<!--- create a structure with necessary objects --->
<cfset responseStruct = structNew()>
<cfset responseStruct["message"] = "File was uploaded">
<cfset responseStruct["error"] = 0>
<cfset responseStruct["path"] = "#application.image_root#">
<cfset responseStruct["images"] = []>

<cfset variables.mediapath="#application.image_upload_root#\">

<!--- loop over the form data to upload each image individually --->
<cfloop collection="#form#" item="i">
<cfif findNoCase("files",i) gte 1>
<cffile action="upload"
fileField="#i#"
destination="#variables.mediapath#"
accept="image/jpg, image/jpeg, image/png, image/gif, image/svg+xml"
nameconflict="makeunique"
result="this_image">

<cfscript>arrayAppend(responseStruct["images"],"#this_image.serverFile#");</cfscript>
</cfif>
</cfloop>

<!--- serialize the structure to json --->
<cfoutput>#serializeJSON(responseStruct)#</cfoutput>

然后在我的 Jodit 初始化中:

var editor = new Jodit('#editor',
{
uploader: {
url: "uploadimage2.cfm",
isSuccess: function (resp) {
//this step is necessary for whatever reason, otherwise it will throw an error.
return resp;
},
process: function(resp){
//this was an important step to align the json with what jodit expects.
return {
files: resp.images,
path: resp.path,
baseurl: resp.path,
error: resp.error,
message: resp.message
}
}
}
}
);

关于javascript - 如何使用 Jodit uploader 和 coldfusion 上传图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com