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

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

新規登録して質問してみよう
ただいま回答率
87.20%
EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

解決済

ECCUBE3で商品画像をアップすると自動で変数にされてしまう

oyashiro
oyashiro

総合スコア0

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

1回答

-1評価

0クリップ

3956閲覧

投稿2017/05/27 01:50

編集2022/01/12 10:58

表題について、画像のURLをそのままアップしたいです。
ProductController.phpで
下記のように、変数に変換しているのですが、
どうすれば画像のファイル名のままファイル名が決定されますか?

\$files = array\(\); if \(count\(\$images\) > 0\) { foreach \(\$images as \$img\) { foreach \(\$img as \$image\) { //ファイルフォーマット検証 \$mimeType = \$image->getMimeType\(\); if \(0 !== strpos\(\$mimeType, 'image'\)\) { throw new UnsupportedMediaTypeHttpException\('ファイル形式が不正です'\); } \$extension = \$image->getClientOriginalExtension\(\); \$filename = date\('mdHis'\) \. uniqid\('_'\) \. '\.' \. \$extension; \$image->move\(\$app\['config'\]\['image_temp_realdir'\], \$filename\); \$files\[\] = \$filename; } } }

Javascript追記

<script> \$\(function\(\) { \$\("#thumb"\)\.sortable\({ cursor: 'move', opacity: 0\.7, placeholder: 'ui-state-highlight', update: function \(event, ui\) { updateRank\(\); } }\); {% if has_class == false %} if \(\$\("#{{ form\.class\.stock_unlimited\.vars\.id }}"\)\.prop\("checked"\)\) { \$\("#{{ form\.class\.stock\.vars\.id }}"\)\.attr\("disabled", "disabled"\)\.val\(''\); } else { \$\("#{{ form\.class\.stock\.vars\.id }}"\)\.removeAttr\("disabled"\); } \$\("#{{ form\.class\.stock_unlimited\.vars\.id }}"\)\.on\("click change", function \(\) { if \(\$\(this\)\.prop\("checked"\)\) { \$\("#{{ form\.class\.stock\.vars\.id }}"\)\.attr\("disabled", "disabled"\)\.val\(''\); } else { \$\("#{{ form\.class\.stock\.vars\.id }}"\)\.removeAttr\("disabled"\); } }\); {% endif %} var proto_img = '' \+ '<li class="ui-state-default">' \+ '<img src="__path__" />' \+ '<a class="delete-image">' \+ '<svg class="cb cb-close">' \+ '<use xmlns:xlink="http://www\.w3\.org/1999/xlink" xlink:href="#cb-close"></use>' \+ '</svg>' \+ '</a>' \+ '</li>'; var proto_add = '{{ form_widget\(form\.add_images\.vars\.prototype\) }}'; var proto_del = '{{ form_widget\(form\.delete_images\.vars\.prototype\) }}'; {% for image in form\.images %} var \$img = \$\(proto_img\.replace\(/__path__/g, '{{ app\.config\.image_save_urlpath }}/{{ image\.vars\.value }}'\)\); var \$widget = \$\('{{ form_widget\(image\) }}'\); \$widget\.val\('{{ image\.vars\.value }}'\); \$\("#thumb"\)\.append\(\$img\.append\(\$widget\)\); {% endfor %} {% for add_image in form\.add_images %} var \$img = \$\(proto_img\.replace\(/__path__/g, '{{ app\.config\.image_temp_urlpath }}/{{ add_image\.vars\.value }}'\)\); var \$widget = \$\('{{ form_widget\(add_image\) }}'\); \$widget\.val\('{{ add_image\.vars\.value }}'\); \$\("#thumb"\)\.append\(\$img\.append\(\$widget\)\); {% endfor %} {% for delete_image in form\.delete_images %} \$\("#thumb"\)\.append\('{{ form_widget\(delete_image\) }}'\); {% endfor %} var hideSvg = function \(\) { if \(\$\("#thumb li"\)\.length > 0\) { \$\("#icon_no_image"\)\.css\("display", "none"\); } else { \$\("#icon_no_image"\)\.css\("display", ""\); } }; var updateRank = function \(\) { \$\("#thumb li"\)\.each\(function \(index\) { \$\(this\)\.find\("\.rank_images"\)\.remove\(\); filename = \$\(this\)\.find\("input\[type='hidden'\]"\)\.val\(\); \$rank = \$\('<input type="hidden" class="rank_images" name="rank_images\[\]" />'\); \$rank\.val\(filename \+ '//' \+ parseInt\(index \+ 1\)\); \$\(this\)\.append\(\$rank\); }\); } hideSvg\(\); updateRank\(\); // 画像削除時 var count_del = 0; \$\("#thumb"\)\.on\("click", "\.delete-image", function \(\) { var \$new_delete_image = \$\(proto_del\.replace\(/__name__/g, count_del\)\); var src = \$\(this\)\.prev\(\)\.attr\('src'\) \.replace\('{{ app\.config\.image_temp_urlpath }}/', ''\) \.replace\('{{ app\.config\.image_save_urlpath }}/', ''\); \$new_delete_image\.val\(src\); \$\("#thumb"\)\.append\(\$new_delete_image\); \$\(this\)\.parent\("li"\)\.remove\(\); hideSvg\(\); updateRank\(\); count_del\+\+; }\); var count_add = {{ form\.add_images|length|default\(0\) }}; \$\('#{{ form\.product_image\.vars\.id }}'\)\.fileupload\({ url: "{{ url\('admin_product_image_add'\) }}", type: "post", dataType: 'json', done: function \(e, data\) { \$\('#progress'\)\.hide\(\); \$\.each\(data\.result\.files, function \(index, file\) { var path = '{{ app\.config\.image_temp_urlpath }}/' \+ file; var \$img = \$\(proto_img\.replace\(/__path__/g, path\)\); var \$new_img = \$\(proto_add\.replace\(/__name__/g, count_add\)\); \$new_img\.val\(file\); \$child = \$img\.append\(\$new_img\); \$\('#thumb'\)\.append\(\$child\); count_add\+\+; }\); hideSvg\(\); updateRank\(\); }, fail: function \(e, data\) { alert\('アップロードに失敗しました。'\); }, always: function \(e, data\) { \$\('#progress'\)\.hide\(\); \$\('#progress \.progress-bar'\)\.width\('0%'\); }, start: function \(e, data\) { \$\('#progress'\)\.show\(\); }, acceptFileTypes: /\(\\\.|\\/\)\(gif|jpe\?g|png\)\$/i, maxFileSize: 10000000, maxNumberOfFiles: 10, progressall: function \(e, data\) { var progress = parseInt\(data\.loaded / data\.total \* 100, 10\); \$\('#progress \.progress-bar'\)\.css\( 'width', progress \+ '%' \); }, processalways: function \(e, data\) { if \(data\.files\.error\) { alert\("画像ファイルサイズが大きいか画像ファイルではありません。"\); } } }\); // 画像アップロード \$\('#file_upload'\)\.on\('click', function \(\) { \$\('#{{ form\.product_image\.vars\.id }}'\)\.click\(\); }\); }\); function fnClass\(action\) { document\.form1\.action = action; document\.form1\.submit\(\); return false; } </script>

ECCUBE3ではjqueryで画像をアップロードしているようでした。

<script src="/ec/html/template/admin/assets/js/vendor/fileupload/vendor/jquery\.ui\.widget\.js"></script><script src="/ec/html/template/admin/assets/js/vendor/fileupload/jquery\.iframe-transport\.js"></script><script src="/ec/html/template/admin/assets/js/vendor/fileupload/jquery\.fileupload\.js"></script><script src="/ec/html/template/admin/assets/js/vendor/fileupload/jquery\.fileupload-process\.js"></script><script src="/ec/html/template/admin/assets/js/vendor/fileupload/jquery\.fileupload-validate\.js"></script>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

xenbeat
xenbeat

2017/05/30 06:05 編集

画像の「URL」というのがしっくりこないのですが、「URL」ではなく、例えばteratail\.jpgという「ファイル名」の画像をアップロードしたら、teratail\.jpgというそのままの「ファイル名」でサーバーに保存したいということで良いでしょうか?
oyashiro
oyashiro

2017/05/30 09:22

そうです。ご指摘いただいたところは修正致しました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。