Декодировать содержимое файла - PullRequest
3 голосов
/ 22 апреля 2020

Я работаю над проектом, который отправляет файл на стороне клиента через API. Я использую метод PUT для отправки файла, но получаю 400 неверных запросов. проверив журнал, обнаружил, что все содержимое моего файла было помещено в файл. но когда я скачиваю файл, его содержимое все равно выглядит нормально. Могу ли я узнать, как отправить файл и убедиться, что содержимое файла декодировано? Ниже приведена часть моего кода.

на самом деле у меня есть этот код до вызова API, не уверен, влияет ли bcoz этого кода на содержимое файла, закодированное ..

<cffile action="write" nameconflict="overwrite" file="#filename#" output="#toString(invoiceXML)#">
<cfhttp url="#requestUrl#" method="PUT" result="res" throwonerror="yes">
    <cfhttpparam name="Authorization" type="header" value="Basic #token#">
    <cfhttpparam name="Content-Type" type="header" value="multipart/form-data">
    <cfhttpparam type="file" name="document" file="#filename#" >
</cfhttp>

enter image description here

1 Ответ

2 голосов
/ 22 апреля 2020

Согласно справке для cfhttpparam файл не должен быть закодирован в URL. Вы уверены, что кодировка происходит в фрагменте кода, который вы разместили?

Если ссылка на самом деле неверна и файл кодируется cfhttpparam, вы можете попробовать добавить атрибут encoded:

<cfhttp url="#requestUrl#" method="PUT" result="res" throwonerror="yes">
    <cfhttpparam name="Authorization" type="header" value="Basic #token#">
    <cfhttpparam name="Authorization" type="header" value="Basic #token#">
    <cfhttpparam name="Content-Type" type="header" value="multipart/form-data">
    <cfhttpparam type="file" name="document" file="#filename#" encoded="no">
</cfhttp>

Если содержимое файла уже закодировано, вы можете попробовать функцию URLDecode для его декодирования.

...