MAAY
@MAAY

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

webAPIでファイルアップロードした際にファイル名の日本語部分のみ文字化けしてしまう

解決したいこと

webAPIでファイルをアップロードした際、
ファイル名の日本語部分のみ文字化け(?????)してしまいました。

APIはPower Automateで実行しており、添付ファイルはsharepointドキュメントから取得しております。
エンコードなど色々試しましたが失敗しました。

分かる方いましたらご教示ください。

0

3Answer

WebAPIの仕様はわかりませんが、Content-Dispositionに指定する値がHTTPに準拠しているのであればfilenameではなくfilename*で指定してみてはいかがでしょうか?

filename*=UTF-8''111111-%E6%9B%B8%E9%A1%9E%E5%90%8D.pdf

1Like

Comments

  1. @MAAY

    Questioner

    @mrbonjin
    ご回答いただきありがとうございます。また返信が遅くなり失礼いたしました。

    提案頂いた形でbody部分を変更し実行してみましたが、Power Automate側でエラーになってしまいました・・・

    しかし初学者で「filename*」というもの自体知らなかったので、勉強になりました!ありがとうございます!

webAPIでファイルをアップロードした際、ファイル名の日本語部分のみ文字化け(?????)してしまいました。

意味が分かりません。ブラウザからある Web API にファイルをアップロードすると、Web API 側で受け取ったファイル名が日本語だと文字化けすると言ってます?

0Like

APIを発行しているアクションの定義部分を開示できるでしょうか?
Power Automate はクラウド版ですか、Desktop版ですか?

0Like

Comments

  1. @MAAY

    Questioner

    @nak435
    Power Automateクラウド版です。
    HTTPアクションにてAPI(POST)を使っています。
    スクリーンショット 2024-03-19 105042.png
    こちらの画像で内容分かりますでしょうか?

    (以前ご教示頂いたJSONの解析の内容を一部使用しております)

  2. 文字化けしているのは、上記の「添付資料」部分でしょうか?
    変数だと思いますが、この変数を設定しているアクションの定義部分を開示できますでしょうか?

    Power AutomateはUTF-8ですが、ファイル名の文字コードの問題か、変数の設定まわりの問題と想定します。

  3. @MAAY

    Questioner

    こちらでいうとおそらく「添付書類」部分だと思います。
    変数設定のアクションの中身がこちら↓になります。
    スクリーンショット-2024-03-19-114006.jpg

    この場合、API側(受け取り側)の問題ということもあるのでしょうか・・・?

  4. 変数「列配列」の元は、JSONオブジェクトですよね。

    文字化けですが、ぜんぜん読めない意味不明の文字に化けていますか?
    それとも、URLエンコードしたような、英字数字列でしょうか?

    試しに、変数の設定でencodeUriComponent関数をかますとどうでしょうか?

    「添付書類」encodeUriComponent(variables('列配列')?[11])

  5. @MAAY

    Questioner

    @nak435 様返信が遅くなりすみません。

    変数「列配列」の元は、JSONオブジェクトですよね。→そうです

    下のようなファイル名表示になっていました。
    「111111-?????.pdf」
    ?部分が日本語で「書類名」出る予定でした。
    エンコードされたようなものではなかったです。
    アップロードしたものを再度開いてみると、中身は壊れていなかったのですが・・・

    諸事情により数日間Power Automateで試せる環境がないのですが、
    実はencodeUriComponent関数をかます方法もチャレンジしていました。
    結果が「111111-%E6%9B%B8%E9%A1%9E%E5%90%8D.pdf」になってしまい、エンコードされたものがそのまま表示されているようなファイル名になってしまいました。

    不慣れで内容の説明が拙く申し訳ございません…

  6. 実はencodeUriComponent関数をかます方法もチャレンジしていました。
    結果が「111111-%E6%9B%B8%E9%A1%9E%E5%90%8D.pdf」になってしまい、

    encodeUriComponentかますと、↑こうなりますね。getならともかくpostなので、可能性は低いなとは思っていました。

    「111111-?????.pdf」

    サーバに送信したHTTPリクエストの中身を見るしかありませんが、POSTのボディにこのファイル名が正しくエンコードされているなら、文字化けの理由がサーバに有る可能性があります。

    Power Automateの実行ログから送信したPOSTのボディを確認できるのか???

Your answer might help someone💌