Autor | Zpráva | ||
---|---|---|---|
piiiiiiiip Profil |
#1 · Zasláno: 17. 2. 2017, 10:16:28
Dobrý den. Na localhostu jsem si udělal v nette upload obrázku. Na localhostu mi to funguje ale když jsem to nahrál na hosting tak to fungovat přestalo.
foreach ($values['foto'] as $ffoto) { if ($ffoto->isOk()){ $filename = $ffoto->getSanitizedName(); $filename = $filename; $targetPath = 'http://aaaaaa.cz/temp/imgs'; $image = Image::fromFile("$targetPath/$filename"); $logoname = "$filename"; $image->save('http://aaaaaa.cz/temp/imgs/file_' . $logoname); $simage = 'http://aaaaaa.cz/temp/imgs/file_' . $logoname; } <div id="tracy-bs-error" class="panel"> <p>Nette\Utils\UnknownImageFileException</p> <h1><span>File '/obrazek.jpg' not found.</span> <a href="https://www.google.com/search?sourceid=tracy&q=Nette%5CUtils%5CUnknownImageFileException+File++not+found." target="_blank" rel="noreferrer noopener">search►</a> </h1> </div> Myslím si že je to špatně nastavenou cestou k úložišti ale nejsem si tím jistý a zkoušel jsem to opravit už přez dvě hodiny bez úspěchu takže to tím být nemusí. |
||
Keeehi Profil |
#2 · Zasláno: 17. 2. 2017, 10:25:08
http://aaaaaa.cz/temp/imgs opravdu správná cesta nebude. Zkusil bych temp/imgs , případně ../temp/imgs nebo něco takového. Záleží, kde ve struktuře je ten tvůj script, ale základem je mít tu cestu relativní.
Řádek 6 a 11 je zbytečný a 9 je taky téměř k ničemu. |
||
piiiiiiiip Profil |
#3 · Zasláno: 17. 2. 2017, 10:32:25
Keeehi:
UploadPresenter mám v app/CoreModule/presenters což znamená že správná cesta by měla tedy být $image->save('../../../temp/imgs/file_' . $logoname); $image->save('/../../../temp/imgs/file_' . $logoname); |
||
Keeehi Profil |
#4 · Zasláno: 17. 2. 2017, 10:56:25
Ta druhá určitě ne. To lomítko na začátku označuje absolutní cestu od kořene.
Kde aktuálně script je zjistíš pomocí echo getcwd() . "\n";
|
||
piiiiiiiip Profil |
#5 · Zasláno: 17. 2. 2017, 11:01:11
Keeehi:
To mi vrátilo tohle: /var/www/vhosts/aaaaaa.cz/httpsdocs/www |
||
Keeehi Profil |
Takže viděl bych to takto nějak. Vytvářet z toho obrázek, jen proto abys to uložil je zbytečnost. Kdyby jsi ho před uložením chtěl zmenšit, tak ok, ale takto to není potřeba.
foreach ($values['foto'] as $ffoto) { if ($ffoto->isOk()) { $ffoto->move('../temp/imgs/file_' . $ffoto->getSanitizedName()); } } |
||
piiiiiiiip Profil |
#7 · Zasláno: 17. 2. 2017, 12:12:27
Původně jsem ho zmenšovat chtěl ale nakonec jsem si to rozmyslel. Toto řešení funguje. Děkuji za pomoc.
|
||
Časová prodleva: 4 dny
|
|||
piiiiiiiip Profil |
#8 · Zasláno: 21. 2. 2017, 13:10:40
Ještě se chci zeptat zda se dá v nette formulář odeslat automaticky za použití js, něco jako tohle:
xhr.open("post", "upload/upload.php", true); // Set appropriate headers xhr.setRequestHeader("Content-Type", "multipart/form-data"); xhr.setRequestHeader("X-File-Name", file.name); xhr.setRequestHeader("X-File-Size", file.size); xhr.setRequestHeader("X-File-Type", file.type); // Send the file (doh) xhr.send(file); |
||
Keeehi Profil |
#9 · Zasláno: 21. 2. 2017, 13:28:16
piiiiiiiip:
Jedna věc je odeslání formuláře javascriptem a druhá je odeslání na pozadí AJAXem. O co ti tedy jde? |
||
piiiiiiiip Profil |
#10 · Zasláno: 21. 2. 2017, 13:36:01
Vzhledem k tomu že se u tohoto formuláře jedná pouze o upload obzázků mi přijde zbytečné dávat tam ještě tlačítko pro odesílání formuláře a tak bych chtěl aby se ty obrázky uploudovaly automaticky.
Keeehi: Co bude jednodušší. Ten kod co jsem uvedl výše (našel jsem ho někde na googlu) by měl provést ten upload přez upload.php. Upload.php bude v mé nette aplikaci UploadPresenter.php a takže jestly to chápu správně tak potřebuji aby xhr.open("post", "upload/upload.php", true); |
||
Keeehi Profil |
Na automatické odeslání formuláře po výběru souboru se dá použít i tento jednoduchý JS
document.getElementById("file").onchange = function() { document.getElementById("form").submit(); }; Jinak tlačítko bys tam měl mít v každém případě. To kdyby náhodou javascript nefungoval. Můžeš ho pak ale javascriptem skrýt. Mám ale takovou otázku, co když se člověk při výběru souboru překlikne a bude chtít svůj výběr změnit? To už nepůjde, jelikož jeho původní výběr okamžitě odesíláš. Já bych to ruční odesílání zase tak úplně nezatracoval. |
||
piiiiiiiip Profil |
Keeehi:
No, jo. To mě nenapadlo xD. |
||
piiiiiiiip Profil |
#13 · Zasláno: 22. 2. 2017, 11:24:34
Keeehi:
Dobře takže tet už dokážu uploadovat soubory pomocí tlačítka. Ještě bych to ale chtěl udělat i pomocí draganddrop. Mám js, který udělá z tagu p tu dropareu ale opět nevím jak to propojit s nette tak aby se soubor nahrál. Na googlu jsem zjistil že se to nejspíš dělá pomocí HTTP request & response ale nevím jak to implementovat. |
||
Keeehi Profil |
#14 · Zasláno: 22. 2. 2017, 11:39:41
|
||
piiiiiiiip Profil |
#15 · Zasláno: 22. 2. 2017, 12:22:29
Keeehi:
Ano to mám. Nevím ale jak předat data do presenteru který má soubor uložit. |
||
Zechy Profil |
#16 · Zasláno: 22. 2. 2017, 12:29:28
piiiiiiiip:
Pokdu budeme vycházet z toho příkladu, kdy se přes XHR otvírá POST request na nějakou stránku, tak místo "upload.php" můžeš jako parametr dát {link Presenter:Action} .
|
||
piiiiiiiip Profil |
#17 · Zasláno: 22. 2. 2017, 12:47:12
Zechy:
Používám toto: document.getElementById("frm-myForm").submit(); <p id="drop-area"> |
||
Zechy Profil |
#18 · Zasláno: 22. 2. 2017, 12:55:18
piiiiiiiip:
Nevím, jaký JavaScript máš, a jak to dělá... Ale při přetažení by měl file input získat referenci na něj. Pak si v klidu formulář odešleš a v datech formuláře máš i nahrávaný soubor. Případně pokud ti stačí hotové řešení, můžeš vyzkoušet jQuery-FileUpload. Ten už v základu nahrává ajaxem a umí i dropzone. |
||
piiiiiiiip Profil |
#19 · Zasláno: 22. 2. 2017, 12:56:47
|
||
Časová prodleva: 12 dní
|
|||
piiiiiiiip Profil |
#20 · Zasláno: 6. 3. 2017, 11:26:22
Zechy:
„Pokdu budeme vycházet z toho příkladu, kdy se přes XHR otvírá POST request na nějakou stránku, tak místo "upload.php" můžeš jako parametr dát {link Presenter:Action} .“
Myslíš jako signál? Zkoušel jsem tohlé: xhr.open("post", {plink upload!, document.write(filesupload);}, true); |
||
Časová prodleva: 4 dny
|
|||
Zechy Profil |
#21 · Zasláno: 10. 3. 2017, 14:19:18
piiiiiiiip:
Proč tam taky dáváš document.write? To zapisuje do stránky. A co je v proměnné filesupload? |
||
Časová prodleva: 3 dny
|
|||
piiiiiiiip Profil |
#22 · Zasláno: 13. 3. 2017, 09:03:16
Zechy:
Já js vůbec nedělám takže nevím. Do tet jsem ho vůbec nepotřeboval a tak vůbec netuším jak to udělat. Proměná filesupload je (aspon myslím) název souboru nebo nejspíš cesta k němu. Vůbec nevím jestly se snažím předávat správnou věc do toho presenteru, jediné co vím je že nemám ani tušení jak tu drag and drop část zprovoznit. |
||
Časová prodleva: 17 dní
|
|||
piiiiiiiip Profil |
#23 · Zasláno: 30. 3. 2017, 11:03:28
Neví tedy někdo jak to udělat správně? Jaký použít nette addon nebo něco?
|
||
Časová prodleva: 8 let
|
0