-
投稿
Daichi Shirakawa 2020年3月16日
/api/1/receipts ファイルボックス 証憑ファイルアップロード の利用法について
Node.js 環境から API経由でファイルをアップロードしようとしていますが、
/api/1/receipts の利用に関して、どのように工夫しても 以下のエラーが脱却できません。
> {“status_code”:400,”errors”:[{“type”:”validation”,”messages”:[“receipt は String で指定してください。”]}]}
Node.js 環境にて axios を用いて以下のように実行しています。
—
const path = “/path/to/pdf.pdf”;
const buf = fs.readFileSync(path);
const receipt = buf.toString(“binary”); // この出力が Blob String となる理解
await i.axios.post(
“/receipts”,
{
company_id: “xxxxxx”,
description: “test description”,
issue_date: new Date(),
receipt,
},
{
headers: {
accept: “application/json”,
Authorization:Bearer xxxxxx
,
},
}
)—
過去の質問
から察するに、receipt フィールドへは Blob 形式データを指定するべきものだと理解していますが、一向に動作いたしません。
そこで質問といたしましては、
1. こちら、具体的に「Stringで指定」とはどのような形式を要求されていますでしょうか?
2. 添付いたしました “test.pdf” に対応した、実際の receipt Stringデータのサンプルをいただきたいです
3. 可能なら Node.js 環境で、ローカルのファイルを指定してアップロードする際の動作コードの例をいただきたいです
以上、1と2をできるだけ早く、その後可能であれば3もお返事頂けると幸いです。
よろしくお願いいたします。
Attachments:
- 回答するにはログインが必要です。
回答
yakumo 2020年3月18日
> 1. こちら、具体的に「Stringで指定」とはどのような形式を要求されていますでしょうか?
バイナリデータを文字列に変換して送ってくれとの意味かと思われます。
根本解決ですがこちらのサイトが参考になりそうです。
いかがでしょうか?
※ 自身は動作未確認https://qiita.com/itoudium/items/d9f04f379d34265387d8
https://r17n.page/2020/02/04/nodejs-axios-file-upload-api/Google にて『バイナリ post string』でぐぐって上位に出てきた記事です。
Daichi Shirakawa 2020年3月19日
ご回答ありがとうございます。
すでに、提示いただいたqiitaに似た解決方法でアップロードを実現できています。
—
const form = new FormData();
const receipt = fs.createReadStream(filepath);form.append(“company_id”, this.meta.freee_company_id);
form.append(“description”, fileKey);
form.append(“receipt”, receipt);await this.axios
.post(“/receipts”, form, {
headers: {
…form.getHeaders(),
},
});—
したがって、
> 3. 可能なら Node.js 環境で、ローカルのファイルを指定してアップロードする際の動作コードの例をいただきたいです
を取り下げます。
継続して、何故動かなかったのか、何故これで動くのかを理解するために、
以下、freeeとして公式にも提示いただいたうえで、
そのうちリファレンスとして欠けている情報があるならば、ご反映いただければと思います。
> 1. こちら、具体的に「Stringで指定」とはどのような形式を要求されていますでしょうか?
> 2. 添付いたしました “test.pdf” に対応した、実際の receipt Stringデータのサンプルをいただきたいです
Daichi Shirakawa 2020年3月19日
補足いたします。
> 2. 添付いたしました “test.pdf” に対応した、実際の receipt Stringデータのサンプルをいただきたいです
リファレンス的にはrequest content type として application/json に対応されているとのことで、
可能ならその前提で扱いたいため、こちら、 application/json 形式でいただけると嬉しいです
freee dev-support 2020年3月24日
ご質問ありがとうございます。
> 1. こちら、具体的に「Stringで指定」とはどのような形式を要求されていますでしょうか?
リファレンスがわかりづらくお手数おかけしました。
仕様にはリクエスト/レスポンスともに JSON と記載がありますが。
参考頂いた記事等で紹介されている、
content-type: multipart/form-data
形式で引き続きご利用ください。またリファレンスの改善提案をフィードバックいたしました。
ご指摘ありがとうございます。> 2. 添付いたしました “test.pdf” に対応した、実際の receipt Stringデータのサンプルをいただきたいです
特定の言語・コードに関する事項は、
一般的な技術サポートとなってしまうため、公式でのサポートは対象外となってしまします。
こちらのコミュニティや技術者コミュニティで解決いただけると幸いです。ご確認よろしくお願いいたします。
Community
コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。