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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

Q&A

解決済

2回答

3744閲覧

ローカルファイル アップロード 最適な構成は?

mizunokunDX

総合スコア13

CSV

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

0グッド

0クリップ

投稿2015/07/27 11:36

編集2015/07/27 14:45

Webアプリケーションで、ファイルアップロード機能の構成について悩んでます。

悩んでる内容は、以下構成を比べた場合の処理性能面や、リスク面等についてのメリット・デメリットです。

①:【概要】クライアント側で、CSVファイル解析 ⇒ 解析結果をそのままDBサーバへ登録
【詳細】
csvファイルをJavaScript (node csv.js)でパース
→内容をJSON化
→サーバにリクエスト→DB登録
【不安要素】・csvファイルをJavaScript (node csv.js)でパースするのが初挑戦なこと
・クライアント側の処理が重くなりそうな気がしている

②:【概要】サーバ側にCSVアップロード、サーバ側でCSV解析⇒その結果をDBサーバへ登録
【詳細】
csvファイルをサーバにアップロード
→配置されたcsvファイルをjavaでパース
→DB登録
【不安要素】・サーバ側に処理が掛かる
・ファイル操作をサーバ側で行う必要性
※例外時にゴミファイルが残ったなどを考慮した構成など

現在は、①、②どちらの構成にすべきか悩んでます。
それぞれの処理性能面、リスク面等でのメリット、デメリットを教えて欲しいです。
また、他の方法で最適そうに思われるものがございましたら、ご教授頂きたいです。

分かりづらい説明ですみません。

因みにcsvファイル読込機能としては、
・区切り文字指定可能(カンマ、タブ区切)
・改行文字指定可能
・文字コード指定可能(Shift-JIS、UTF-8)
・ヘッダー部一つのファイル読込可能
・列数は自由なファイル読込可能
の機能を持った機能にしたいです…

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

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

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

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

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

Stripe

2015/07/27 11:46

①と②のどちらにすべきか、と言われても。判断基準となるものが何もありません。
mizunokunDX

2015/07/27 14:45

分かりづらくて申し訳ございませんでした。答えになってないかもしれませんが、質問内容を修正いたしました。
guest

回答2

0

ベストアンサー

文字コードの指定可能(Shift-JIS、UTF-8) が気になりました。

Shift-JIS と言いながら UTF-8 でアップする やから を考慮しなければいけません。

クライアント側で文字コードを判別して変換。
実現も可能そうですが、ファイルサイズによるパフォーマンスのケアが必要です。
http://qiita.com/weal/items/3b3ddfb8157047119554

私なら ② を採用しますね。
サーバ側でCSVを受け取り、文字コードを判別し、変換の後、DB登録。
こちらの方が、化け文字でDB登録されるリスクは減るかと思います。

文字コード判別は以下を参考に、もしエラーなら弾く処理を入れます。
http://qiita.com/pcpDev/items/0c83712e93f8f972f208

投稿2015/07/27 12:43

kurosawa

総合スコア780

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

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

mizunokunDX

2015/07/27 14:50

ご投稿ありがとうございます。 クライアント側よりサーバ側で行った方が色々とリスクが減りそうですね。 ご参考させていただきます。
guest

0

私が思いつく限りでは。

①:csvファイルをJavaScript (node csv.js)でパース→内容をJSON化→サーバにリクエスト→DB登録

1.メリット クライアント側での処理が多いために、サーバ処理は軽い
2.デメリット クライアント側のJavaScriptが読みにくい。

②:csvファイルをサーバにアップロード→javaでcsvファイルをパース→DB登録

1.メリット ソース自体はきれいに書きやすい。
2.デメリット サーバに処理が集中する

私なら、②ですね。可読性はある程度処理速度犠牲にしても確保した方が良いことが多いので。
まぁ、クライアント側処理をめちゃくちゃ整理して書ける人は違うんでしょうけども。

投稿2015/07/27 11:57

tenraku

総合スコア148

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

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

mizunokunDX

2015/07/27 14:51

ご投稿ありがとうございます。 そうですよね...可読性も確保するとなると➁で行おうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問