# 日本語ファイル名のアップロード(Python)

**URL:** <https://community.cybozu.dev/t/topic/6956>\
**Category:** kintone 開発相談\
**Created:** [2021 年 1 月 26 日午前 8:40 UTC](https://community.cybozu.dev/t/topic/6956 "2021-01-26T08:40:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2506](https://avatars.discourse-cdn.com/v4/letter/l/3bc359/32.png) [@Legacy\_Account2506](https://community.cybozu.dev/u/Legacy_Account2506)\
**Post date:** [2021 年 1 月 26 日午前 8:40 UTC](https://community.cybozu.dev/t/topic/6956/1 "2021-01-26T08:40:24Z")

</div>

お世話になっております。

掲題の件について、ドキュメントには「日本語ファイル名のデータを

アップロードする際はUTF-8でエンコードされたものを指定」とあるのを確認しましたが、なかなかうまくいかない為ご相談させてください。

質問したいのは

1.ファイルをKintoneにアップロードする

2.レコードに紐づける

の1番目でして、該当部分のコードを抜き出したものが以下になります。

* * *

def uploadToKintone(self, filename):  
data = open(filename, ‘rb’)

files={‘file’☹**filename.encode(‘utf-8’).decode(‘utf-8’)**,data,‘multipart/form-data’)} resp=requests.post(self.base\_url+‘/file.json’,files=files,headers=self.upload\_header)

* * *

太字部分が「UTF-8でエンコーディングする」の対応に該当するかと思っているのですが、ひょっとすると何か勘違いをしておりますでしょうか?

ちなみにファイル名が日本語無しの場合、アップロードはうまくいきます。

以上、よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account343](https://avatars.discourse-cdn.com/v4/letter/l/b4bc9f/32.png) [@Legacy\_Account343](https://community.cybozu.dev/u/Legacy_Account343)\
**Post date:** [2021 年 2 月 19 日午後 8:00 UTC](https://community.cybozu.dev/t/topic/6956/2 "2021-02-19T20:00:42Z")

</div>

PythonではなくてNode.js (Google Apps Script) で同様の問題にはまったことがあり、その時のコードを貼っておきます。色々うまくいかず最終的にマルチパートの生成を自前でやりました。

何かの参考になれば・・・

```
var blob = getBlob(file); // BLOBに変換
var boundary = ' ____JSTOKINTONE____'; //任意
var data = '--' + boundary + '\r' +
'Content-Disposition: form-data; name=\"file\"; filename=\"' + filename + '\"\r' +
'Content-Type: application/pdf\r\r';
var payload = Utilities.newBlob(data).getBytes()
.concat(blob.getBytes())
.concat(Utilities.newBlob('\r--' + boundary + '--').getBytes());
var options = {
method: 'POST',
contentType: "multipart/form-data; boundary=" + boundary,
headers: {'X-Cybozu-Authorization': token },
payload: payload
};

```
