[ajax] file upload bez jquery

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod ReZetFet 15. 7. 2010 14:48

Ahoj, zkouším si udělat komponentu která nahraje na web obrázek a ořízne jej.
Ořezávání není problém to v php už zvládám, horší je to s upoadem obrázku.
To sem chtěl řešit ajaxem abych nemusel furt načítat stránku. Ovšem když pošlu jméno souboru do php tak to hodí chybu protože to pošle pouze název a nikoliv soubor. A tady je kámen úrazu. Kod je dole. Dík za rady ;-)
Kód: Vybrat vše
var fullPath = document.getElementById('jmeno_souboru').value;
if (fullPath) {
        var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
        var filename = fullPath.substring(startIndex);
        if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
                filename = filename.substring(1);
        }
        alert(filename);
}
ReZetFet
Junior

Odeslat příspěvekod kohutisko 15. 7. 2010 16:32

v tomto kode sa nic nikam neposiela, len manipuluje s menom suboru.
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod ReZetFet 15. 7. 2010 16:52

ano já vím.
Myslel jsem že když přidám celou cestu nebude to jako string ale nějaký object ale na to se musí skoro jistě zcela jiným ztpůsobem.
ReZetFet
Junior

Odeslat příspěvekod kohutisko 15. 7. 2010 17:48

odosielanie suboru na server sa robi cez form-ovsky element input s typom file
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod ReZetFet 15. 7. 2010 18:38

No tohle všechno vím.
Já bych chtěl ten form naplnit ale nevím jak na to skrze ajax.
ale $_FILES['fupload'] by chtělo, počítám, nějaký binární data a né název souboru (což byl můj první pokus jako jsem poslal výše)
php
Kód: Vybrat vše
echo $_FILES['fupload']['name'];

if (isset($_FILES['fupload']['name']))
  {
    $slozka = "img"; // Zde si napište svojí složku, do které se budou soubory ukládat (bez lomítka)
    $cil = $slozka . "/" .$_FILES['fupload']['name']; // Toto je promenná $cil, která obsahuje adresár, kde se má soubor uploadovat a taky název souboru.
    $nazev_souboru = $_FILES['fupload']['tmp_name']; // Zjistí docastné umístení souboru
    $copy = move_uploaded_file($nazev_souboru, $cil) // A tady zkopíruje soubor z docastného umístení do cílového souboru a složky
      or die ("Prenesený soubor nelze zkopírovat"); // A pokud se nepovede, tak vypíše tuto hlášku
    chmod ($cil, 0644); // Ješte na soubor vyhodíme funkci chmod, která zmení jeho práva na maximum, pokud by soubor psal chybu zmente 0644 na 0777
    if($copy == true){ // Pokud se kopírování provede úspešne
      echo "<p>Soubor http://pizzanonstop.cz/admin/img/" .$_FILES['fupload']['name']. " byl úspešne nahrán na server.</p><p><a href=\"$cil\">Jdi na soubor ".$_FILES['fupload']['name']."</a></p>";
    }else{
      echo "<p>Soubor nemohl být nahrán.\nPocet chyb: " . $_FILES['fupload']['error']. "</p>";
    }
  }

a html
Kód: Vybrat vše
  <form action="#" method="post" enctype="multipart/form-data">
      <p><input type="file" name="fupload" />
      <input type="submit" value="Nahrát" />
      </p>
    </form>
ReZetFet
Junior

Odeslat příspěvekod kohutisko 15. 7. 2010 18:59

no uz si na dobrej ceste :-) akurat tej forme das ako target nejaky iframe, tym padom sa nebude po uploade refreshovat cela stranka iba ten iframe. kukaj napriklad tu:

http://www.ajaxf1.com/tutorial/ajax-fil ... orial.html
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod ReZetFet 15. 7. 2010 19:23

Tuhle stránku jsem taky vygooglil.
Ono s iframe to není tak úplně ajax ale ono to asi fakt jinak nepůjde.
Jo a dík ;-)
ReZetFet
Junior

Odeslat příspěvekod kohutisko 15. 7. 2010 19:43

on to vobec neni AJAX ale asi si nepomozes :-) ten lokalny subor musi na server odist cez form inak to myslim mozne nie je. este je moznost uploadovat to flashovskym appletom ale to ma zase vlastne negativa...
kohutisko
Junior
Uživatelský avatar

Odeslat příspěvekod Vebloud 16. 7. 2010 08:49

Jenom pro zajímavost a mojí šťouralskou zvědavost. Důvod proč nepoužít třeba právě jQuery a plugin Uloadify je jaký?
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kernel_panic [passed] 16. 7. 2010 08:59

nejspíš ony desítky kB redundantních sraček...
k bití internetovejch nihilistů jsem už příliš starej, ale za ty roky mně narostl krunýř, o kterej se vždy báječně rozplácnete; takže, mám zůstat čelem nebo?
kernel_panic [passed]
Přeborník Živě roku 2008
Uživatelský avatar

Odeslat příspěvekod ReZetFet 16. 7. 2010 10:18

kohutisko: já používám swfuploader, ale nelíbí semi tohle řešení a jak jsem si pročítal uvody do ajaxu tak sem se dočetl, že je možný javacriptem poslat formulář a ajax umí pracovat s POST tak sem začal pátrat jak by to šlo vyřešit. Zatím furt pátrám.

Vebloud: za mě to vystihl kernel_panic [passed] skoro doslova ;-)
ReZetFet
Junior

Odeslat příspěvekod Vebloud 16. 7. 2010 10:44

kernel_panic [passed] píše:nejspíš ony desítky kB redundantních sraček...

To "redundantních" bych si rád nechal vysvětlit...

Trochu offtopic, jak moc pánové pracujete s AJAXEem a používáte vůbec nějáký framework?

A zpět k tématu velice nadějně vypadá toto řešení http://www.xinotes.org/notes/note/768/ a vypadá to, že by se mohlo obejít bez nenáviděného balastu okolo...
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kernel_panic [passed] 16. 7. 2010 11:30

pokud i kvůli takové jednoduché, jednoúčelové a okamžité věci rezignujeme na vlastní kód a raději budeme lepit šablony a frejmworky, tak nám nepochybně bylo líp v době, kdy "640kB stačilo všem"...

v tomto konkrétním případě je redundantní úplně vše, co má víc jak 20 řádků nebo 1 kilobajt...

nehledě na to, že řešitel se vlastním kódem naučí víc, než se dobrovolně stát rukojmím frejmworku, po kterým dřív nebo později neštěkne pes...
k bití internetovejch nihilistů jsem už příliš starej, ale za ty roky mně narostl krunýř, o kterej se vždy báječně rozplácnete; takže, mám zůstat čelem nebo?
kernel_panic [passed]
Přeborník Živě roku 2008
Uživatelský avatar

Odeslat příspěvekod kohutisko 16. 7. 2010 11:39

musim s kolegom suhlasit. samozrejme v zlozitych projektoch su rozne frameworky a kniznice nevyhnutnostou z dovodu timovej prace, existencie uz odladeneho kodu, financnych uspor... ale podla mna je dolezite, aby clovek vedel, ako to vnutorne funguje a nie aby iba lepil k sebe rozne skatule.

ta hranica, kedy zacina byt neefektivne robit vlastny kod a treba sa pozriet po niecom hotovom je samozrejme nejasna a subjektivna. ale myslim si, ze konkretne tento problem, ktory sa tu riesi, lezi objektivne este pred nou :-)
kohutisko
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků