ugrás a tartalomhoz

Fajlok csatolasa Javaszkriptel

Anonymous · 2006. Szep. 25. (H), 11.54
Van harom input mezom, ahova fajlokat rakhatok be.

<input type="file" name="userFile0" size="20">
<input type="file" name="userFile1" size="20">
<input type="file" name="userFile2" size="20">
A lapon van egy gomb <input type="button" onclick="BeginAttach();"> amelyre ha raklikelek lefuttat egy Javaszkript kodot.

A lap egy child ablakban nyilik meg (hasznalom a parent es child modszert - self.opener).

Hogyan tudnam megcsinalni, hogy a kivalasztot fajlok nevet atkuldjem a parent ablakba es taroljam oket egy <input type="hidden"> mezoben.

Mondjuk ha harom fajlot kivalasztok es rakatintok a gombra kuldje el a nevuket a kov. keppen :

<input type="hidden" name="attfiles" value="
file1.jpg;file2.jpg;file3.jpg">


Tudna valaki segiteni ? Barmilyen tanacs jol jonne !

Koszonom !
 
1

így nem fog menni

zsepi · 2006. Szep. 25. (H), 12.12
File-t feltölteni csak input type="file" mezővel tudsz. Biztonsági okokból kifolyólag ennek a mezőnek az értékét csak a user tudja kitölteni.

Ha csak a fájlok nevére vagy kíváncsi, akkor meg a szülő dokumentumban levadászod a megfelelő inputmezőt, majd a value attribútumához hozzáfűzöd az újonnan kiválasztott fájl nevét.
2

Ingovános megoldás

vbence · 2006. Szep. 25. (H), 12.17
Kényes a téma, mert ugye lokális fájlok elérésől van szó. Egy megoldás jut eszembe. Ha a formban elfelejted az enctype="multipart/form-data" attribútumot beállítani, akkor a szerverre felküldi a fájlok neveit (a tényleges fájlok helyett).
Ha megnyitasz javascriptel egy ablakot, és a formnak a target attribútummal megadod az ablak nevét, akkor elpostolhatod (a szkriptből) úgy, hogy a form maga sértetlen maradjon (később fel lehessen tölteni magukat a fájlokat is újra kiválasztás nélkül).

Esetleg ideiglenesen megváltoztathatod GET-re a formot, így az URL-ből a szkript is ki tudja szedni a neveket, nem kell szerveroldali támogatás neki.
3

Kossz!

Anonymous · 2006. Szep. 25. (H), 12.35
Koszonom a valaszokat !
Lenne meg egy kerdesem, JavaScriptel lehet feltolteni fajlokat a szervere ?
Vagy ezt a munkat mar PHP-n keresztul kell elvegezni ?
4

Javascript vs. PHP?

vbence · 2006. Szep. 25. (H), 12.49
Lásd még: szerveroldal vs. kliensoldal...

Javascript tud létrehozni akár egy egész formot menetközben. Javascript el tud küldeni egy formot a szevrernek (ahol a PHP lakik és feldolgozza a fájlokat).

A PHP tud generálni egy oldalt (egy formal). Ezután a PHP futása befejeződik. Nem tud hatást gyakorolni arra, hogy és mikor érkezik vissza a form (ezt vagy a user küldi vissza egy submit gombal, vagy JavaScript). Ha a formot visszaküldték ismét a PHP kerül futtatásra, és a feltöltött fájlt az átmeneti tárból átemelheti a weben látható könyvtárba.

Egy fájlfeltöltő input értékét csak a user tudja beállítani (sem generáláskor - PHP, sem futás közben - JavaScript nem módosítható) egyértelmű okokból.

Már az előző válasz végén is meg akartam jegyezni, hogy ugye nem azért tépem itt a számat, mert lusta voltál elolvasni az idevágó manuált. Pedig a size="20" -ból tudhattam volna...
5

ok

Anonymous · 2006. Szep. 25. (H), 13.00
Ok, osszinten tudom mi van az http://www.php.net/manual/en/features.file-upload.php oldalon.
Sot, azt is szeretnem hasznalni.

Nezd itt a kodom:

<html>
	<head>
	<script type="text/javascript">
	function BeginAttach()
 	{  
 		self.opener.document.foo.attach1.value='Testing1'; 
    	self.opener.document.foo.submit();
    	self.close();
  	}
	</script>
	</head>
<body>
<form action="test2.php" enctype="multipart/form-data" method="post">
<input type="file" name="file">
<input type="button" name="button" value="Ok" onclick="BeginAttach();">
</form>

</body>
</html>
Miutan rakatintok a butonra mit kell csinaljak, hogy elobb futason le egy PHP kodot azutan kuldje at a JavaScript adatokat a parent oldalra.

Nem ertem, hogyan szurjam be a PHP-t ha nincs submit gombom.

Koszonom
6

Mi is a cél?

vbence · 2006. Szep. 25. (H), 13.31
Ha leírod a végső célt, akkor talán tudnék segíteni. Ami biztos: file tipusú inputnak nem tudsz értéket adni. Sehogy. A kiválasztott fájl nevét az első hozzászólásom módszerével meg tudod nézni. Amit furcsálok az, hogy miért szeretnél csak fájlneveket feltölteni?
7

[semi-OFF] ez is lehetne a cél

zsepi · 2006. Szep. 25. (H), 14.18
vbence:
Amit furcsálok az, hogy miért szeretnél csak fájlneveket feltölteni?


Lehet, hogy a webes alkalmazás csak egy frontend valami szolgáltatáshoz. Pl. nemrég volt egy projektünk, ahol fájlrendszer és CMS között kellet szinkronizálni (át akarnak állni majd a CMS-re, de most még nem lehet rávenni minden felhasználót, hogy oda publikáljon, egy részük még a régi hálózati könyvtárra rakja, de a tesztelőknek látni kell a CMS-ben), s mivel nem bíztunk abba, hogy a felhasználó be tudja gépelni rendesen a fájl elérési útját, ezért fájlválasztó inputot használtunk ennek a bekérésére. Adatbázisban szépen leraktuk, majd a szinkronizáló szolgáltatás frissítette a fájlokat CMS-ben.
8

És nem lehet furcsálni?

vbence · 2006. Szep. 25. (H), 16.08
Nem azt mondtam, hogy lehetetlen, de akkor csak nincs enctype, és kész. Az (inkább csak költői) kérdéssel arra próbáltam rákérezni, hogy a tisztelt kolléga tudja egyáltalán mit szeretne?
9

nem neked, hanem az utókornak írtam

zsepi · 2006. Szep. 25. (H), 16.18
Az (inkább csak költői) kérdéssel arra próbáltam rákérezni, hogy a tisztelt kolléga tudja egyáltalán mit szeretne?

Ebben teljesen igazad van. Jeleztem is a témasorban, hogy esetleg OFF, nem veled akartam kötözködni. Ha az lett volna a szándék, azt inkább magánban intézem :)

Egy példát akartam hozni, hogy lehet ilyen megoldás jogosan. Viszont ne itt folytassuk (ha akarod, akkor magánban), mert kimoderálnak a végén
10

Ok

Anonymous · 2006. Szep. 26. (K), 07.50
Megirom azt amit nem sikerul megvalositani.

Szoval van egy HTML urlap. Az urlapon van egy fajl mezo, amely mellet van egy browse gomb is. A Browse-ra katintva egy fajlot csatolhatok.

Az urlap igy nez ki:

<form name="foo" action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" size="20" onkeypress="KeyPress()"  >
<input type="button" name="button" onclick="Attach();">
</form>
Vegso lepes az, hogy rakatintok a Button gombra, amely lefutatja az Attach() Javascript fugvenyt.

A JavaScript fuggveny igy nez ki:

<script type="text/javascript">
function Attach()
{
  window.location = "test.php?do=upload";
  // Itt lefut par JavaScript kod
}
</script>
A Javascript kod atkuldi a lapot egy masik linkre, ide : http://mypage.com/test.php?do=upload.

Na es most jon elo a problema. Megirom a kov PHP kodot:

<?php
if ($_GET['do'] == 'upload')
{
  print "ok";  // Ez elojon
  print $_FILES['userfile']['name']; // Itt nem jon elo semmi
}
?>
Miert nem tudom a fajl nevet elohivni ?

Koszonom !
11

POST

Anonymous · 2006. Szep. 26. (K), 08.41
Hát az űrlapod nem küldte el a formot, hanem csak megváltoztatta a címet. Ergo, az űrlap nem került elküldésre.
12

ok

Anonymous · 2006. Szep. 26. (K), 08.59
Es mit javasolsz megoldas kent?