首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过ColdFusion API添加Monday.com文件的问题

通过ColdFusion API添加Monday.com文件的问题
EN

Stack Overflow用户
提问于 2022-03-28 01:48:44
回答 1查看 160关注 0票数 2

我一直在使用这个星期一的API,并且在使它在我们的系统和我们使用的其他一些工具中可用方面取得了很大的进步,然而,当涉及到添加文件时,我遇到了一些障碍。我可以做其他的事情,从添加项目,更新,列,板和阅读我所需要的,但添加文件是什么,最终使我崩溃。我的代码是基于上传一个文件到monday.com,很难的方法的。作者正在使用NodeJS,所以我已经尽我所能地去转换它。我的代码如下:

代码语言:javascript
复制
<cfset dataQuery = 'mutation ($file:File!) {add_file_to_column (item_id: 123456789, column_ID: file, file: $file){id}}'>
<cfset boundary = "xxxxxxxxxx">
<cfset upfile = "image1.png">
<cfset base64Sample = SAMPLE_BASE64_STRING>
<cfset data = "">

<!--- Construct Query --->
<cfset data &= "--" & boundary & "#chr(13)##chr(10)#">
<cfset data &= 'Content-Disposition: form-data; name="query"#chr(13)##chr(10)##chr(13)##chr(10)#'>
<cfset data &= dataQuery & '#chr(13)##chr(10)#'>
<cfset data &= "--" & boundary & "#chr(13)##chr(10)#">

<!--- Construct File --->
<cfset data &= 'Content-Disposition: form-data; name="variables[file]"; filename="' & upfile & '";#chr(13)##chr(10)#'>
<cfset data &= "Content-Type:application/octet-stream;#chr(13)##chr(10)##chr(13)##chr(10)#">
<cfset data &= ToString(ToBinary(base64Sample))>
<cfset data &= "#chr(13)##chr(10)#--" & boundary & "--#chr(13)##chr(10)#">

<cfdump var="#data#">
<cfhttp method="post" url="https://api.monday.com/v2" result="result">
    <cfhttpparam type="Header" name="Content-Type" value="multipart/form-data; boundary=#boundary#">
    <cfhttpparam type="Header" name="Authorization"  value="#mondayLogin.Token#">
    <cfhttpparam type="body" value="#data#">
</cfhttp>

当我试图让它工作时,格式化发生了一些变化,但是无论我做什么,它总是给我相同的错误消息:“没有查询字符串存在”。

我希望这里的人,谁有更多的知识,做多部分边界和周一API可以有所帮助。

编辑:我将\r\n更改为chr(13)chr(10),并且仍然得到相同的错误。

编辑2:在对它进行更多的重构之后,我似乎已经克服了第一个错误,现在我又碰到了两个与GraphQL相关的新错误。

  • 字段“add_file_to_column”缺少必需的参数: column_id
  • 字段'add_file_to_column‘不接受参数'column_ID’,我确定我仍然在错误的地方格式化它,但是我还不知道它在哪里。

编辑3:原来我的列名是错的。'ID‘不应该是大写的,而应该是'column_id’。我现在得到了另一个新的错误:内部服务器错误(500)

EN

回答 1

Stack Overflow用户

发布于 2022-03-28 16:34:01

因此,我在这方面遇到了很多不同的错误信息。基本上我有三个问题:

  1. 将我的\r\n替换为正确的ColdFusion值chr(13)chr(10)
  2. 根据文档,查询的格式不正确。
  3. ColdFusion在编译它们时对单引号(‘)和双引号(“)有不同的处理方式。一旦我摆脱了双引号并删除了单引号,我就能让它正常工作。下面是我的演示工作。
代码语言:javascript
复制
<cfset dataQuery = "mutation ($file:File!) {add_file_to_column (item_id: 123456789, column_id: files, file: $file){id}}">
<cfset boundary = "xxxxxxxxxx">
<cfset upfile = "image1.png">
<cfset base64Sample = "SAMPLE_BASE64_IMAGE">
<cfset data = "">
<cfset cflf = "#chr(13)##chr(10)#">

<!--- Construct Query --->
<cfset data &= "--" & boundary & "#cflf#">
<cfset data &= 'Content-Disposition: form-data; name="query"#cflf##cflf#'>
<cfset data &= dataQuery & '#cflf#'>
<cfset data &= "--" & boundary & "#cflf#">

<!--- Construct File --->
<cfset data &= "Content-Disposition: form-data; name=""variables[file]""; filename=""#upfile#"";#cflf#">
<cfset data &= "Content-Type:application/octet-stream;#cflf##cflf#">
<cfset data &= ToString(ToBinary(base64Sample))>
<cfset data &= "#cflf#" &"--" & boundary & "--">

<cfdump var="#data#">
<cfhttp method="post" url="https://api.monday.com/v2/file" result="result">
    <cfhttpparam type="Header" name="Content-Type" value="multipart/form-data; boundary=#boundary#">
    <cfhttpparam type="Header" name="Authorization"  value="API_KEY_HERE">
    <cfhttpparam type="body" value="#data#">
</cfhttp>

<cfset returnStruct = DeserializeJSON(result.filecontent)>

<cfdump var="#returnStruct#">
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71641641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档