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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

5645閲覧

csvをサーバへリクエストする方法

natsu9993

総合スコア10

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2015/11/24 09:57

編集2015/11/25 17:10

はじめまして皆さんのお力をお借りしたいです

いま、あるwebページを作っています
サーバーサイドとフロントエンドで別々の担当者が
作成していて、僕の担当はフロントサイドです

そこで
webページで表紙している画像を
何点か利用者に選んでもらい
その画像のファイル名を
カンマ区切りで渡してあげる必要があるのですが
どのようにやればよいのかまったくわかりません
(画像の横にチェックボタンを作成し、押された画像のパスを
サーバーサイドに渡そうと思い作成しています)

どのようなものを用いて行えば
実現が可能でしょうか?

素人なので詳細まで教えていただければ
大変助かります

よろしくお願いします。

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

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

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

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

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

think49

2015/11/24 10:19

タイトルは「csvファイルをローカルに保存する方法」ですが、本文は「csvをサーバへリクエストする方法」に読めます。 後者の質問と判断しますが、良かったでしょうか。タイトルを分かりやすいものにしていただけると助かります。
natsu9993

2015/11/24 10:23

ありがとうございます タイトルの方変更させて頂きました。
guest

回答3

0

ベストアンサー

csv形式でサーバーサイドに渡してあげる必要があるのですが、どのようにやればよいのかまったくわかりません

下記情報が必要になります。

  • サーバ側にどのようなパラメータで渡すのか
  • CSVフォーマットでどのセルに画像パスを格納するのか

とりあえず、RFC4180でCSVが定義されていますので目を通してください。

仮に「1行のカンマ区切りで画像ファイルパスを格納する」としてCSVフォーマットは次のように書けるでしょう。

JavaScript

1'use strict'; 2var imgpaths = ['http://example.com/sample1.jpg', 'http://example.com/sample2.jpg', 'http://example.com/sample3.jpg'] 3var csv = imgpaths.map(function (value) { return '"' + value.replace(/"/g, '""') + '"'; }).join(); 4console.log(csv); // "http://example.com/sample1.jpg","http://example.com/sample2.jpg","http://example.com/sample3.jpg"

サーバへのリクエストに関しては <form> で送信するか、XMLHttpRequest で送信するか、を目的に合わせて選んでください。

(2015/11/24 19:35追記)
CSVファイルを使う用途としてCSVファイルをサーバにUPしてデータベースに入れる処理はよくありますが、ひょっとしてそういう可能性はないでしょうか。
だとすれば、<input type="file"> でUPするだけの実装で済みますが。

(2015/12/01 12:38追記)

このようなかんじで画像の横にチェックボタンを置き、最後に『送信』ボタンを押すと押されたものをまとめて渡すようにしたいのですが。

次のように書きます(jsfiddleにサンプルUP済)。

HTML

1<!-- sample.php に画像リスト(csv)を送信する --> 2<form id="sample" method="GET" action="sample.php"> 3 <ul> 4 <li> 5 <label> 6 <input type="checkbox" name="image[]" value="1.jpg" /> 7 <img src="images/1.JPG" alt="img01" width="250" height="50" /> 8 </label> 9 </li> 10 <li> 11 <label> 12 <input type="checkbox" name="image[]" value="2.jpg" /> 13 <img src="images/2.JPG" alt="img02" width="250" height="50" /> 14 </label> 15 </li> 16 </ul> 17 <p><input type="submit" value="submit"></p> 18</form> 19 20<script> 21'use strict'; 22(function () { 23 function handleSubmit (event) { 24 var form = event.target, 25 inputs = form.elements['image[]'], 26 hidden = inputs[0].cloneNode(false), 27 imglist = []; 28 29 for (var i = 0, l = inputs.length, input; i < l; ++i) { 30 input = inputs[i]; 31 if (input.checked) { 32 imglist.push(input.value); 33 input.disabled = true; // input[type=checkbox] の送信無効化 34 } 35 } 36 37 if (imglist.length > 0) { 38 hidden.type = 'hidden'; // input[type=chwckbox] の代替要素 39 hidden.value = imglist.join(); // "1.jpg,2.jpg” を代入(※画像ファイル名に " を含まない場合に限る。サーバサイドのCSVパーサが "," で区切って分割代入する仕様ならこの方法。RFC4180 準拠なら "" で各データセルを括る事。) 40 input.parentNode.insertBefore(hidden, input); 41 console.log(hidden); 42 } else { 43 console.log('no checked image'); 44 } 45 46 event.preventDefault(); // 検証の為、submit をキャンセル (本番では外す) 47 } 48 49 function main () { 50 document.getElementById('sample').addEventListener('submit', handleSubmit, false); // 要 IE9+ (IE8- をサポートするなら attachEvent と併用) 51 } 52 53 main(); 54}()); 55</script>

ただし、この場合はサーバサイドスクリプトが側で input[type=checkbox] を受け取って処理するのが普通です。
送信前にわざわざ CSV フォーマットに変換しなくてもサーバ側で image[] のパラメータで選択した画像ファイル名を受け取れるわけですから CSV への変換コストが無駄になります。
サーバ側の仕様を変更できない事情があるなら仕方がないですが、このコードは非効率的な手段の為、サーバサイドスクリプト製作者と相談する事をお勧めします。

Re: Yuki_Tsutsumiさん

投稿2015/11/24 10:30

編集2015/12/01 03:38
think49

総合スコア18162

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

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

natsu9993

2015/11/28 08:57

要は選択した画像のファイル名をコンマ区切りで投げれたらいいみたいです。
think49

2015/11/28 14:29

画像を選択する方法によって実装が変わりますが、親コメントのように画像リストが配列化できたとして imgpaths.join() で期待通りの結果が得られると思います。 ただし、ファイル名に ["\r\n] を含まないものとします。 サーバ側で解析(パース)すると思われる「CSVのフォーマット仕様」も気になるところですね。
natsu9993

2015/11/29 16:00

<li> <input type="checkbox" name="checkbox" id="checkbox"> <img src="images/1 (1).JPG" alt="img01" width="250"/> </li> <li> <input type="checkbox" name="checkbox" id="checkbox"> <img src="images/1 (2).JPG" alt="img02" width="250"/> </li> このようなかんじで画像の横にチェックボタンを置き、最後に『送信』ボタンを押すと押されたものをまとめて渡すようにしたいのですが。
think49

2015/12/01 03:39

親コメントに追記しました。 親コメントでも書きましたが、CSVへの変換処理が不要な気がします。「サーバ側で input[type=checkbox] で選択したパラメータを受け取る仕様に出来ない理由」があるのでしょうか。
guest

0

フロントとサーバでどういう作業の分け方をしているんですか?
おそらくデータを画面から選択してもらってサーバに値を処理させるのであれば、選択したデータを取得するのもサーバ側の処理で実行するので、フロント側は渡すところまで考えなくて良いのではないかと思いました。

投稿2015/11/24 10:04

matsumoto

総合スコア590

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

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

natsu9993

2015/11/24 10:12 編集

選択した画像をサーバーサイドで加工してDLさせるのが最終目標です サーバー側(Ruby on Rails)で加工をする画像のパスをcsv形式で投げてほしいと言われたのですがフロント側での実装は難しいでしょうか?
matsumoto

2015/11/24 10:17

選択した画像をまとめて送るのであれば、ユーザに選択させた複数の画像を、csvにして渡すことになります。渡すところまではjavascriptでできます。フレームワークでangularjs,jqueryなど覚えるといろいろ簡単に出来ます。
natsu9993

2015/11/24 10:26

ありがとうございます jqueryは一度調べてみたのですがangularjsは初めて聞きました。 一度調べてみます
guest

0

CSV形式というのはカンマ区切りということですか?
それともファイルの形にして送信するのでしょうか?
単にファイルパスの一覧を送るだけなら

送る側

HTML

1<form name="check.php" method="post"> 2<input type="checkbox" name="filepath[]" value="ファイルパス1">ファイルパス1 3<input type="checkbox" name="filepath[]" value="ファイルパス2">ファイルパス2 4<input type="submit" value="送信"> 5</form>

PHP

1$filepath = $_POST["filepath"]); //チェックされたファイルパスが配列で受け取れる 2//以下、適当な処理

みたいな感じで簡単なのですが・・

投稿2015/11/24 10:12

yuki84web

総合スコア1857

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

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

natsu9993

2015/11/24 10:17

相手がRailsで実装しているのでですがRailsでも似たような書き方で可能でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問