teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

kintoneタグ追加

2021/01/12 05:05

投稿

t-yknow
t-yknow

スコア4

title CHANGED
File without changes
body CHANGED
File without changes

3

誤記訂正

2021/01/12 05:05

投稿

t-yknow
t-yknow

スコア4

title CHANGED
@@ -1,1 +1,1 @@
1
- goGuzzle ファイル名が日本語のファイルをアップロードするとファイル名が消える
1
+ Guzzle ファイル名が日本語のファイルをアップロードするとファイル名が消える
body CHANGED
File without changes

2

内容修正

2021/01/12 03:38

投稿

t-yknow
t-yknow

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,11 @@
1
1
  Guzzleを使ってフォームからファイルをアップロードさせる機能を作っています。アップロード先はkintoneで、Excel,Word,pdf,jpgなどをアップロードします。表題の通りファイル名が日本語の時にファイル名が正しく出ず、docxでは開けなくなってしまいます。
2
+ (追記)kintoneのドキュメントに「※日本語ファイル名の場合は UTF8 でエンコードした内容を指定して下さい。」と記載がありました。
2
3
 
3
4
  試したこと
4
5
  Uploadテスト.docx → 問題なし(アップロード後のファイル名:Uploadテスト.docx)
5
6
  Upload_test.docx → 問題なし(アップロード後のファイル名:Upload_test.docx)
6
7
  テスト.docx → 問題あり(アップロード後のファイル名:.docx)
8
+ ファイル名をエンコードしてみましたが同じ結果でした。
7
9
 
8
10
  流れとしては
9
11
  フォームからGuzzleでkintoneへファイルをアップロード
@@ -34,7 +36,7 @@
34
36
  また、var_dumpでヘッダーをみてみたところ
35
37
  ["Content-Type"]=> array(1) { [0]=> string(30) "application/json;charset=utf-8" }
36
38
  となっておりました。
37
- 調べてもドキュメントをみても解決方法が見つからず困っています。
39
+ エンコードの仕方が間違っていますでしょうか。調べてもGuzzleドキュメントをみても解決方法が見つからず困っています。
38
40
  初心者なため簡単な解決法をどうかご教授いただければ幸いです。
39
41
 
40
42
  【環境】
@@ -50,13 +52,14 @@
50
52
  'http_errors' => false
51
53
  ]);
52
54
 
55
+ $filename = mb_convert_encoding($_FILES['resume']['name'], "UTF-8", "auto");
53
56
 
54
57
  $res = $client->request('POST', $Url,[
55
58
  'multipart' => [
56
59
  [
57
60
  'name' => 'file',
58
61
  'contents' =>fopen($_FILES['file']['tmp_name'], 'r'),
59
- 'filename' => $_FILES['file']['name'],
62
+ 'filename' => $filename,
60
63
  ]
61
64
  ],
62
65
  'headers' => [

1

誤記訂正

2021/01/12 01:48

投稿

t-yknow
t-yknow

スコア4

title CHANGED
@@ -1,1 +1,1 @@
1
- Guzzle ファイル名が日本語のファイルをアップロードするとファイル名が消える
1
+ goGuzzle ファイル名が日本語のファイルをアップロードするとファイル名が消える
body CHANGED
@@ -55,7 +55,7 @@
55
55
  'multipart' => [
56
56
  [
57
57
  'name' => 'file',
58
- 'contents' =>fopen($_FILES['resume']['tmp_name'], 'r'),
58
+ 'contents' =>fopen($_FILES['file']['tmp_name'], 'r'),
59
59
  'filename' => $_FILES['file']['name'],
60
60
  ]
61
61
  ],