<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>_nec &#187; files</title>
	<atom:link href="http://nec.shell8.net/tag/files/feed/" rel="self" type="application/rss+xml" />
	<link>http://nec.shell8.net</link>
	<description>webfejlesztés, front-end programozás, javascript, css, xhtml, ajax, air</description>
	<lastBuildDate>Wed, 31 Aug 2011 06:54:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Adobe AIR #4 Drag&#8217;n&#039;Drop és Filefeltöltés</title>
		<link>http://nec.shell8.net/2008/07/05/adobe-air-dragndrop-filefeltoltes/</link>
		<comments>http://nec.shell8.net/2008/07/05/adobe-air-dragndrop-filefeltoltes/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 17:52:05 +0000</pubDate>
		<dc:creator>_nec</dc:creator>
				<category><![CDATA[JS]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[dragndrop]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://nec.shell8.net/?p=24</guid>
		<description><![CDATA[Az alapok után, ismerve az ablakkezelést és az eseményeket nézzünk meg egy összetettebb kérdéskört. AIR alkalmazásunknak lehetősége van más alkalmazásokból különböző adatok fogadására, a GUI-ban megszokott egyszerű drag&#8217;n'drop műveletekkel. Míg művelet végrehajtása a felhasználónak könnyű, a háttérben jópár komplexebb dologra kell figyelni. Habár böngészőkben is használható javascript alapokon, webes fejlesztőknek ez eléggé új terület lehet, [...]]]></description>
			<content:encoded><![CDATA[<p>Az <a href="/2008/06/19/adobe-air-alapok/">alapok után</a>, ismerve az <a href="/2008/06/23/adobe-air-ablakkezeles/">ablakkezelést</a> és az <a href="/2008/06/25/adobe-air-esemenyek/">eseményeket</a> nézzünk meg egy összetettebb kérdéskört. </p>
<p>AIR alkalmazásunknak lehetősége van más alkalmazásokból különböző adatok fogadására, a GUI-ban megszokott egyszerű <em>drag&#8217;n'drop</em> műveletekkel. Míg művelet végrehajtása a felhasználónak könnyű, a háttérben jópár komplexebb dologra kell figyelni. Habár böngészőkben is használható javascript alapokon, webes fejlesztőknek ez eléggé új terület lehet, így előbb nézzük meg a művelet sajátosságait a konkrét példa előtt.<br />
<span id="more-24"></span></p>
<h3>Események</h3>
<p>A drag&#8217;n'drop műveletnek minimum két résztvevője van, ahonnan indul a drag és ahol végetér, közben pedig azok az elemek is reagálhatnak, melyekkel érintkezésbe kerül a mozgatott adat. A művelet során lényegében csak eseményekre hagyatkozhatunk, ezekkel zajlik az adathordozás.</p>
<p>Eseményszinten nézve ezt az alábbiak alkotják:<br />
<strong>a forrás az adatmozgatás eredete<br />
</strong></p>
<ul>
<li>dragstart &#8211; a művelet kezdetén</li>
<li>drag &#8211; folyamatosan a mozgatás ideje alatt</li>
<li>dragend &#8211; az adat &#8220;elengedésekor&#8221;</li>
</ul>
<p><strong>a forrás a mozgatás célpontja illetve lehetséges célpontjai</strong></p>
<ul>
<li>dragover &#8211; folyamatosan küldi, mikor a mozgatott adat az elem fölött van</li>
<li>dragenter &#8211; mikor a mozgatott adat belép az elem fölé</li>
<li>dragleave &#8211; mikor a mozgatott adat elhagyja az elemet</li>
<li>drop &#8211; mikor a felhasználó az elemre <em>ejti</em> a mozgatott adatot</li>
</ul>
<p>Ezekre az eseményekre figyelve kezelhetjük a műveletet illetve vezethetjük a felhasználót, hogy hova mit mozgathat, ügyelve a felhasználóbarát kezelésre.</p>
<p>Az eseményen belül innentől a <em>dataTransfer</em> objektumra koncentrálunk, ez tartalmazza a művelet során érkező adatokat.</p>
<h3>Adat típusok</h3>
<p>A böngészők nagy általánosságban az alábbi típusokat kezelik le a művelet során:<br />
text, html, url, file. Ez utóbbi böngészőgyártótól függően még lebontható képre, helyi file-ra, stb.</p>
<p>Fontos megjegyezni. hogy a típust mindíg az adatmozgatás eredete állítja be, az esemény hordozza magával, a fogadó ellenőrizheti. Pl ha a címsorunkból kijelöljük a linket és azt mozgatjuk, az AIR szöveget fog látni. De ha pl az RSS feed ikonját mozgatjuk, már URL-nek látja. Itt a böngésző a forrás, az állítja be a típust.</p>
<p>Az AIR mozgatható adattípusai a következőek:</p>
<ul>
<li>Text &#8211; sima szöveg<br />
(<em>&#8220;text/plain&#8221;</em>)</li>
<li>HTML &#8211; html struktúrált szöveg<br />
(<em>&#8220;text/html&#8221;</em>)</li>
<li>URL &#8211; egy vagy több link<br />
(<em>&#8220;text/uri-list&#8221;</em>)</li>
<li>Bitmap &#8211; bittérkép, kép adat<br />
(<em>&#8220;image/x-vnd.adobe.air.bitmap&#8221;</em>)</li>
<li>File list &#8211; file lista, egy vagy több helyi file-t tartalmaz<br />
(<em>&#8220;application/x-vnd.adobe.air.file-list&#8221;</em>)</li>
</ul>
<p>Ezek a flash képességeire emlékeztethet egyeseket, ami nem csoda, hisz az AIR esetében javascriptből félig flashbe lóg a lábunk. Az adattípust a <em>dataTransfer.types </em>tömb tartalmazza egyszerre többet is hordozhat, hisz pl egy html kódrészlet alapjában véve szöveg, de tartalmazhat linkeket és amúgy html formázott szöveg, így lehet akár három típusa is. Hogy ezeket miként használjuk fel, majd az adatok kinyerésénél megézzük.</p>
<p>Most &#8211; miután látjuk mikor és mit mozgathat a felhasználó &#8211; jön az, hogy mit kezdhet illetve kezdjen az adattal.</p>
<h3>effectAllowed, dropEffect</h3>
<p>Az adat forrása a mozgatás kezdetekor meghatározhatja milyen lehetőségek vannak az adat elhelyezését illetően. Az adatokat fogadó alkalmazás pedig kikötheti, hogy ő mit akar végrehajtani ezek közül. Ez a két paraméter az eseményben az <em>dataTransfer.</em><em>effectAllowed</em> és a fogadónál a <em>dataTransfer.</em><em>dropEffect</em>. Értékei a következők lehetnek:</p>
<ul>
<li>none &#8211; nincs/nem draggelhető adat, vagy az adott adattípust nem fogadja az elem</li>
<li>copy &#8211; másolás</li>
<li>move &#8211; mozgatás</li>
<li>link &#8211; linkelés</li>
<li>copyLink &#8211; másolás vagy linkelés</li>
<li>copyMove &#8211; másolás vagy mozgatás</li>
<li>linkMove &#8211; linkelés vagy mozgatás</li>
<li>all &#8211; mindegyik</li>
</ul>
<p>Az első négy művelet egyenként megfelel az adott rendszer szabvány kurzorainak, amit felvesz az egérkurzor a művelet során. Pl ha intézőből mozgatunk file-t, az &#8216;all&#8217; értékkel jön, mi pedig jelezhetjük egy file feltöltésnél hogy ez csak &#8216;copy&#8217; azaz másolás lesz a lehetséges műveletek közül, ekkor az egérkurzor jelzi ezt nekünk.</p>
<h3>Drop</h3>
<p>A művelet vége a <em>drop</em> esemény, ekkor kezdhetjük meg a feldolgozását az adatnak amit kaptunk. Az eseményből a <em>dataTransfer.getData( </em>string<em> mimetype )</em> metódussal nyerhetjük ki azt az adatot, amire típus alapján szükségünk van. A <em>mimetype </em>paraméter a fent ismertetett típusok egyike.</p>
<p>Sajnos ez így még korántsem tökéletes, próbálkozásaim során reprodukálható volt az a jelenség, hogy képet böngészőből mozgatva próbáltam elfogadtatni vagy vizsgáltatni AIRben, nagyokat fagyott a futtatókörnyezet. Gyakorlatban inkább a filelistával és feltöltéssel mutatom be a fentieket.</p>
<h3>Példa: filefeltöltés drag&#8217;n'drop -ra</h3>
<p>A tanulmányozás során négy zónát raktam le htmlbe ahova huzogathatok adatokat:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;target link&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Linkeket ide<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		Ez csak linkeket fogad.
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;target text&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Szövegelj ide<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		Ez csak szöveget fogad.
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;target file&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Fileok jöhetnek<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		Ez csak fileokat fogad.
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;target image&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Képes vagyok<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		Ez csak képeket fogad.
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Majd oldalbetöltéskor meghatároztam az események lekezelését. Itt jegyezném meg, hogy bár kényelmes használni, sajnos a jQuery <em>.bind</em> eseménykezélese egyelőre erre nem jó, mert a továbbított Event objektum nem tartalmazza a <em>dataTransfer</em> objektumot.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>19
20
21
22
23
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div.target'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span>s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		s.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;dragenter&quot;</span><span style="color: #339933;">,</span> dragEnterOver<span style="color: #009900;">&#41;</span>
		s.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;dragover&quot;</span><span style="color: #339933;">,</span> dragEnterOver<span style="color: #009900;">&#41;</span>
		s.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;drop&quot;</span><span style="color: #339933;">,</span> dragDrop<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Aztán jöhetnek az eseménykezelők. Az elsőben (<em>dragEnterOver</em>) válogatom le, melyik mezőbe melyik elemet engedem.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">    <span style="color: #003366; font-weight: bold;">function</span> dragEnterOver<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		event.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hasClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'link'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">types</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;text/uri-list&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">dropEffect</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;link&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hasClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">types</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;text/plain&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">dropEffect</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;copy&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hasClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'file'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">types</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;application/x-vnd.adobe.air.file-list&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">dropEffect</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;copy&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> $<span style="color: #009900;">&#40;</span>event.<span style="color: #660066;">target</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hasClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'image'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">types</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;image/x-vnd.adobe.air.bitmap&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">dropEffect</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;copy&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">dropEffect</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;none&quot;</span><span style="color: #339933;">;</span>			
		<span style="color: #009900;">&#125;</span>        
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Mivel a statikus HTML elemek alapból nem támogatják a drag&#8217;n'drop-ot, azzal kezdjük, hogy az megakadályozzuk az alapértelmezett reakciót. Majd a zónák osztálynevei és a hordozott adat alapján leválogatjuk, hogy fogadjuk-e, és ha igen, miként fogadjuk az adatot.</p>
<p>Végül a drop esemény lekezelése, kinyerjük az adatot. Ezt most röviden összekötjük egy filelista feltöltéssel HTTP-n keresztül, javascriptből, röviden mert meglepően egyszerű.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">    <span style="color: #003366; font-weight: bold;">function</span> dragDrop<span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> list <span style="color: #339933;">=</span> event.<span style="color: #660066;">dataTransfer</span>.<span style="color: #660066;">getData</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;application/x-vnd.adobe.air.file-list&quot;</span><span style="color: #009900;">&#41;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">typeof</span> list <span style="color: #339933;">!=</span> <span style="color: #3366CC;">&quot;undefined&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #003366; font-weight: bold;">var</span> request <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> air.<span style="color: #660066;">URLRequest</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;http://valami.tavoli.domain.hu/upload.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #000066; font-weight: bold;">in</span> list <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				list<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">upload</span><span style="color: #009900;">&#40;</span>
					request<span style="color: #339933;">,</span>
					<span style="color: #3366CC;">'filefile'</span>
				<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #006600; font-style: italic;">// örömünkben írjuk ki a fileok neveit</span>
				air.<span style="color: #660066;">Introspector</span>.<span style="color: #660066;">Console</span>.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>list<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>A <em>getData</em> és a <em>mime-type</em> használatával kinyerjük a fileokat (40.), ez minden esetben egy file lista, melynet tagjai <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/filesystem/File.html">File</a> objektumok. Ha megnézzük a doksiban, látható, hogy van egy <em><a href="http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&#038;file=00002204.html">upload</a></em> metódusa, amit a <em>FileReference</em> objektumból örököl, ami már egy flash objektum. De a js, hála a script összemosásnak, látja ezt a metódust és ha meghívja őket egyenként (44.-51.) egy <a href="http://help.adobe.com/en_US/AIR/1.1/jslr/flash/net/URLRequest.html">URLRequest</a> társaságában, fel is tölti őket.</p>
<p>Mára ennyi fért bele, jó kísérletezést, bónusz, vagy házifeladat a copy-paste és a clipboard használatának utánajárni, hasonló ezekhez. Következő részben az AIR alkalmazás natív rendszerszintű menükezelését nézzük meg.</p>
<p><strong>Eddig az Adobe AIR-ről:</strong></p>
<ul>
<li><a href=" http://nec.shell8.net/2008/10/14/eval-adobe-air-ben/">Eval(); Adobe AIR-ben</a></li>
<li><a href="http://nec.shell8.net/2008/10/22/adobe-air-sqlite-javascript/">#6 SQLite JavaScriptből</a></li>
<li><a href="http://nec.shell8.net/2008/07/11/adobe-air-nativ-menukezeles/">#5 Natív menükezelés</a></li>
<li><a href="http://nec.shell8.net/2008/06/25/adobe-air-esemenyek">#3 Események</a></li>
<li><a href="http://nec.shell8.net/2008/06/23/adobe-air-ablakkezeles">#2 Ablakkezelés</a></li>
<li><a href="http://nec.shell8.net/2008/06/19/adobe-air-alapok">#1 Az alapok</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nec.shell8.net/2008/07/05/adobe-air-dragndrop-filefeltoltes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

