質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

3819閲覧

Jquery File Upload に日本語ファイル名での不具合

退会済みユーザー

退会済みユーザー

総合スコア0

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/04/01 16:47

編集2022/01/12 10:55

ノーマルの状態では問題なく作動するように設置できたのですが
日本語のファイル名に対応させる必要があって
こちら
お茶どうぞ☆・:゚*オォヾ(o´∀`o)ノさんのページを参考にさせて頂いて(というかそのまんま) [sever]→[php]内のindex.phpが下記のソースになりました。
(同ディレクトリの「UploadHandler.php」は一切手を加えていません。)

php

1<?php 2/* 3 * jQuery File Upload Plugin PHP Example 4 * https://github.com/blueimp/jQuery-File-Upload 5 * 6 * Copyright 2010, Sebastian Tschan 7 * https://blueimp.net 8 * 9 * Licensed under the MIT license: 10 * http://www.opensource.org/licenses/MIT 11 */ 12 13error_reporting(E_ALL | E_STRICT); 14/*================================= 15= myOptions = 16=================================*/ 17class myOptions{ 18 function get_server_var($id) { 19 return isset($_SERVER[$id]) ? $_SERVER[$id] : ''; 20 } 21 function get_full_url() { 22 $https = !empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'on') === 0; 23 return 24 ($https ? 'https://' : 'http://'). 25 (!empty($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : ''). 26 (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME']. 27 ($https && $_SERVER['SERVER_PORT'] === 443 || 28 $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))). 29 substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/')); 30 } 31 function uploadDir(){ 32 return dirname($this->get_server_var('SCRIPT_FILENAME')); 33 } 34 function uploadUrl(){ 35 return $this->get_full_url(); 36 } 37} 38$myOptions=new myOptions(); 39$upDirName='files'; 40$upDir='/'.$upDirName.'/'; 41 42$options=array( 43 'upload_dir' => $myOptions->uploadDir().$upDir, 44 'upload_url' => $myOptions->uploadUrl().$upDir, 45 ); 46/*----- End of myOptions ------*/ 47 48require('UploadHandler.php'); 49 50class myHandler extends UploadHandler{ 51 function my_basename($str) { 52 $temp = substr(strrchr("/$str",'/'),1); 53 return $temp; 54 } 55 protected function get_version_param() { 56 return isset($_GET['version']) ? $this->my_basename(stripslashes($_GET['version'])) : null; 57 } 58 59 protected function get_file_name_param() { 60 $name = $this->get_singular_param_name(); 61 return isset($_GET[$name]) ? $this->my_basename(stripslashes($_GET[$name])) : null; 62 } 63 64 protected function get_file_names_params() { 65 $params = isset($_GET[$this->options['param_name']]) ? 66 $_GET[$this->options['param_name']] : array(); 67 foreach ($params as $key => $value) { 68 $params[$key] = $this->my_basename(stripslashes($value)); 69 } 70 return $params; 71 } 72 protected function trim_file_name($file_path, $name, $size, $type, $error, 73 $index, $content_range) { 74 $name = trim($this->my_basename(stripslashes($name)), ".\x00..\x20"); 75 if (!$name) { 76 $name = str_replace('.', '-', microtime(true)); 77 } 78 if (strpos($name, '.') === false && 79 preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { 80 $name .= '.'.$matches[1]; 81 } 82 if (function_exists('exif_imagetype')) { 83 switch(@exif_imagetype($file_path)){ 84 case IMAGETYPE_JPEG: 85 $extensions = array('jpg', 'jpeg'); 86 break; 87 case IMAGETYPE_PNG: 88 $extensions = array('png'); 89 break; 90 case IMAGETYPE_GIF: 91 $extensions = array('gif'); 92 break; 93 } 94 if (!empty($extensions)) { 95 $parts = explode('.', $name); 96 $extIndex = count($parts) - 1; 97 $ext = strtolower(@$parts[$extIndex]); 98 if (!in_array($ext, $extensions)) { 99 $parts[$extIndex] = $extensions[0]; 100 $name = implode('.', $parts); 101 } 102 } 103 } 104 return $name; 105 } 106 function my_scandir($dir) { 107 $ignored = array('.', '..', '.svn', '.htaccess'); 108 109 $files = array(); 110 foreach (scandir($dir) as $file) { 111 if (in_array($file, $ignored)) continue; 112 $files[$file] = filemtime($dir . '/' . $file); 113 } 114 115 arsort($files); 116 $files = array_keys($files); 117 118 return ($files) ? $files : false; 119 } 120 protected function get_file_objects($iteration_method = 'get_file_object') { 121 $upload_dir = $this->get_upload_path(); 122 if (!is_dir($upload_dir)) { 123 return array(); 124 } 125 return array_values(array_filter(array_map( 126 array($this, $iteration_method), 127 $this->my_scandir($upload_dir) 128 ))); 129 } 130}$upload_handler = new myHandler($options);

結果、日本語のファイル名でアップロードした際 2点の致命的な不具合が発生しています。

① インデックスに表示されるリンクをクリックしても 「ファイルがありません」となってしまう。
ディレクトリ内にはファイルは存在していますが文字化けしてしまっているため hrefのファイル名が異なってしまっています。

② 一度日本語名のファイルをアップロードするとアクセスしなおした際 インデックの表示は空の状態になります。
これも①同様ディレクトリ内には文字化けしたファイルが存際します。

「jQuery-File-Upload-9.5.2」以降すべてのバージョンで試してみましたが同じ結果でした
HTML・php・javascript すべてのファイルはutf-8で保存しています。

各局何処を直せばいいのか皆目見当がつかず困ってしまっています...。(ノ_ё)

詳しい方がいらっしゃいましたらどうか、解決策をお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ローカルサーバーの設定が原因だったみたいです
WEBサーバーに設置してみたところ 正常に作動しました。

投稿2016/04/02 14:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問