SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Drag & Drop ときどき File API nakajijapan
背景的なもの html5といろいろなAPIの出現に伴い、いろいろな表現ができるようになってきた。                       こんな僕でも実装できた! 写真をドラッグアンドドロップして画像投稿できたらいいなぁという純粋な願望 イメージは30Days的な表現をしたかった。
調査 Drag & Drop DataTransfer FileApi FileReader // XmlHttpRequest ※ブラウザはFirefoxのみ
Drag & Drop
Drag & Drop dragenter  ドラッグ中のマウスカーソルが、要素と重なったときに瞬間に呼び出されるイベント dragover ドラッグ中のマウスカーソルが要素内から出た時に呼び出されるイベント drop ドラッグ時に呼び出されるイベント
あああ <javascript> function init() { dandd= new Nakaji();   addEvent(window, "dragenter", dandd.dragEnter, false); vardropBox = {}; dropBox= document.getElementById("dropbox");   addEvent(dropBox, "dragover", dandd.dragOver, false); addEvent(dropBox, "drop",     dandd.drop, true); }   // ロード時に処理を追加 window.addEventListener("load", init, false);    
あああ <javascript> Nakaji.prototype= {   	//------------------------- 	// ドラッグ中のマウスカーソルが、              // 要素と重なったときに瞬間に呼び出されるイベント 	//------------------------- dragEnter : function(event)  	{      $("#dropbox").css('background', 'red'); 	},
<html> <div id= "dropbox">    Drop Here!!</div>
File API
File API FileReader 今のところFirefoxのみ 次のバージョンのChromeで利用可能!? http://gihyo.jp/dev/column/01/browser/chrome5 ファイルをたくさんアップロードする処理をしようとすると重くなる?
drop : function(event) {         // ドラッグされたデータを取得 var files = event.dataTransfer.files;   ・ ・ ・ var file = files[i]; var reader = new FileReader();         reader.name = file.name, reader.index = i, reader.file = file;         // メソッドの登録 reader.addEventListener("loadend", Nakaji.prototype.buildImageListItem, false);         // ファイルをdataURL形式で読み取る reader.readAsDataURL(file);    あああ
buildImageListItem : function(event)    { varimgTag = $(document.createElement("img")); vardivTag = $(document.createElement("div")); varname = event.target.name; vardata = event.target.result; varfile = event.target.file;   imgTag.attr({                 width:  200,                 height: 200, src:    data             });           // 先頭に追加         $("#bag").prepend(divTag.append(imgTag.fadeIn(2000))); あああ
以上!
XmlHttpRequest()
XmlHttpRequest() 画像ファイルをアップロード DataTransferオブジェクトを利用 処理中は進捗状況を表示させる XmlHttpRequest.onprogress()
あああ <javascript>         // マルチパート形式で画像を保存する multipartFormData+= '--' + boundary + ''; multipartFormData += 'Content-Disposition: form-data;          filename="' + file.name + '"'                             +'Content-Type: ' + contentType + ''                             +'Content-Transfer-Encoding: binary' + '' + ''                             +file.getAsBinary()                             +'--' + boundary + '--';  
あああ <javascript> //アップロード先 xhr.open("POST", "./upload.php"); // ヘッダの設定 xhr.setRequestHeader( "Content-type","multipart/form-data; boundary=" + boundary ); xhr.setRequestHeader( "Content-Length", multipartFormData.length ); // バイナリデータを送信 xhr.sendAsBinary(multipartFormData);
まとめ ほとんどクロスブラウザできてない Firefoxでしか動かない。 jqueryがやってくれることを切に願います 重い ブラウザのメモリリークが凄いことになる free()的なものはないものか!    FileReaderは重い XmlHttpRequest() 今回なによりも画像ファイルアップロード時の処理 が面倒くさかった!
実演?
ご性聴ありがとうございました。

Weitere ähnliche Inhalte

Was ist angesagt?

Start printf 6_takarakasai
Start printf 6_takarakasaiStart printf 6_takarakasai
Start printf 6_takarakasaitakara kasai
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)Fujio Kojima
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック庸介 高橋
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoShoot Morii
 
ハッシュと配列
ハッシュと配列ハッシュと配列
ハッシュと配列TENTO_slide
 

Was ist angesagt? (6)

Start printf 6_takarakasai
Start printf 6_takarakasaiStart printf 6_takarakasai
Start printf 6_takarakasai
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyotoGo言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
 
前期講座09
前期講座09前期講座09
前期講座09
 
ハッシュと配列
ハッシュと配列ハッシュと配列
ハッシュと配列
 

Andere mochten auch

Brand visibility 2 en
Brand visibility 2 enBrand visibility 2 en
Brand visibility 2 enDiferencia
 
English.sucess cases lauching chevrolet spark
English.sucess cases   lauching chevrolet sparkEnglish.sucess cases   lauching chevrolet spark
English.sucess cases lauching chevrolet sparkDiferencia
 
Alyssa, Gianna&amp; Grace
Alyssa, Gianna&amp;  GraceAlyssa, Gianna&amp;  Grace
Alyssa, Gianna&amp; Gracegigistar4
 
English. success cases mscar children day
English. success cases   mscar children dayEnglish. success cases   mscar children day
English. success cases mscar children dayDiferencia
 
Laviola marylea 2010-201_labinfo
Laviola marylea 2010-201_labinfoLaviola marylea 2010-201_labinfo
Laviola marylea 2010-201_labinfomarylea
 
サービスをRailsにした話
サービスをRailsにした話サービスをRailsにした話
サービスをRailsにした話Daichi Nakajima
 
Môn triết chương v giá trị hoàn chỉnh
Môn triết chương v giá trị hoàn chỉnhMôn triết chương v giá trị hoàn chỉnh
Môn triết chương v giá trị hoàn chỉnhngaynangha
 
Môn triết chương v giá trị
Môn triết chương v giá trịMôn triết chương v giá trị
Môn triết chương v giá trịngaynangha
 

Andere mochten auch (11)

Brand visibility 2 en
Brand visibility 2 enBrand visibility 2 en
Brand visibility 2 en
 
僕とPuppetと
僕とPuppetと僕とPuppetと
僕とPuppetと
 
English.sucess cases lauching chevrolet spark
English.sucess cases   lauching chevrolet sparkEnglish.sucess cases   lauching chevrolet spark
English.sucess cases lauching chevrolet spark
 
Alyssa, Gianna&amp; Grace
Alyssa, Gianna&amp;  GraceAlyssa, Gianna&amp;  Grace
Alyssa, Gianna&amp; Grace
 
Refining
RefiningRefining
Refining
 
English. success cases mscar children day
English. success cases   mscar children dayEnglish. success cases   mscar children day
English. success cases mscar children day
 
Laviola marylea 2010-201_labinfo
Laviola marylea 2010-201_labinfoLaviola marylea 2010-201_labinfo
Laviola marylea 2010-201_labinfo
 
サービスをRailsにした話
サービスをRailsにした話サービスをRailsにした話
サービスをRailsにした話
 
Ethiopia
EthiopiaEthiopia
Ethiopia
 
Môn triết chương v giá trị hoàn chỉnh
Môn triết chương v giá trị hoàn chỉnhMôn triết chương v giá trị hoàn chỉnh
Môn triết chương v giá trị hoàn chỉnh
 
Môn triết chương v giá trị
Môn triết chương v giá trịMôn triết chương v giá trị
Môn triết chương v giá trị
 

Ähnlich wie Drag anddropfilereader

C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装Hiroki Takahashi
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applicationstotty jp
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210cmtomoda
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術ina job
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとかyouku
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しようHiroki Omae
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターンChrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターンYoichiro Tanaka
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium MobileNaoya Ito
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLTaisuke Fukuno
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 

Ähnlich wie Drag anddropfilereader (20)

jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装C# ドラッグ&ドロップ処理の実装
C# ドラッグ&ドロップ処理の実装
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
webを飾る技術
webを飾る技術webを飾る技術
webを飾る技術
 
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
ScaLa+Liftとか
ScaLa+LiftとかScaLa+Liftとか
ScaLa+Liftとか
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう実行時のために最適なデータ構造を作成しよう
実行時のために最適なデータ構造を作成しよう
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
Chrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターンChrome Extensionsの基本とデザインパターン
Chrome Extensionsの基本とデザインパターン
 
YUI
YUIYUI
YUI
 
Titanium Mobile
Titanium MobileTitanium Mobile
Titanium Mobile
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 

Kürzlich hochgeladen

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (9)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Drag anddropfilereader

  • 1. Drag & Drop ときどき File API nakajijapan
  • 2. 背景的なもの html5といろいろなAPIの出現に伴い、いろいろな表現ができるようになってきた。 こんな僕でも実装できた! 写真をドラッグアンドドロップして画像投稿できたらいいなぁという純粋な願望 イメージは30Days的な表現をしたかった。
  • 3. 調査 Drag & Drop DataTransfer FileApi FileReader // XmlHttpRequest ※ブラウザはFirefoxのみ
  • 5. Drag & Drop dragenter  ドラッグ中のマウスカーソルが、要素と重なったときに瞬間に呼び出されるイベント dragover ドラッグ中のマウスカーソルが要素内から出た時に呼び出されるイベント drop ドラッグ時に呼び出されるイベント
  • 6. あああ <javascript> function init() { dandd= new Nakaji();   addEvent(window, "dragenter", dandd.dragEnter, false); vardropBox = {}; dropBox= document.getElementById("dropbox");   addEvent(dropBox, "dragover", dandd.dragOver, false); addEvent(dropBox, "drop", dandd.drop, true); }   // ロード時に処理を追加 window.addEventListener("load", init, false);    
  • 7. あああ <javascript> Nakaji.prototype= {   //------------------------- // ドラッグ中のマウスカーソルが、 // 要素と重なったときに瞬間に呼び出されるイベント //------------------------- dragEnter : function(event) { $("#dropbox").css('background', 'red'); },
  • 8. <html> <div id= "dropbox"> Drop Here!!</div>
  • 10. File API FileReader 今のところFirefoxのみ 次のバージョンのChromeで利用可能!? http://gihyo.jp/dev/column/01/browser/chrome5 ファイルをたくさんアップロードする処理をしようとすると重くなる?
  • 11. drop : function(event) { // ドラッグされたデータを取得 var files = event.dataTransfer.files;   ・ ・ ・ var file = files[i]; var reader = new FileReader(); reader.name = file.name, reader.index = i, reader.file = file; // メソッドの登録 reader.addEventListener("loadend", Nakaji.prototype.buildImageListItem, false); // ファイルをdataURL形式で読み取る reader.readAsDataURL(file);    あああ
  • 12. buildImageListItem : function(event) { varimgTag = $(document.createElement("img")); vardivTag = $(document.createElement("div")); varname = event.target.name; vardata = event.target.result; varfile = event.target.file;   imgTag.attr({ width: 200, height: 200, src: data });   // 先頭に追加 $("#bag").prepend(divTag.append(imgTag.fadeIn(2000))); あああ
  • 15. XmlHttpRequest() 画像ファイルをアップロード DataTransferオブジェクトを利用 処理中は進捗状況を表示させる XmlHttpRequest.onprogress()
  • 16. あああ <javascript> // マルチパート形式で画像を保存する multipartFormData+= '--' + boundary + ''; multipartFormData += 'Content-Disposition: form-data; filename="' + file.name + '"' +'Content-Type: ' + contentType + '' +'Content-Transfer-Encoding: binary' + '' + '' +file.getAsBinary() +'--' + boundary + '--';  
  • 17. あああ <javascript> //アップロード先 xhr.open("POST", "./upload.php"); // ヘッダの設定 xhr.setRequestHeader( "Content-type","multipart/form-data; boundary=" + boundary ); xhr.setRequestHeader( "Content-Length", multipartFormData.length ); // バイナリデータを送信 xhr.sendAsBinary(multipartFormData);
  • 18. まとめ ほとんどクロスブラウザできてない Firefoxでしか動かない。 jqueryがやってくれることを切に願います 重い ブラウザのメモリリークが凄いことになる free()的なものはないものか!    FileReaderは重い XmlHttpRequest() 今回なによりも画像ファイルアップロード時の処理 が面倒くさかった!