Článok bol prvýkrát uverejnený 17. januára 2007.
Často potrebujem ukladať súbory na hosting a bleskovo napísať ich HTTP adresu do e-mailu, HTML kódu, komentára alebo chat okna. Konkrétne Adium a iné IM messengery si s transferom neporadia vždy, v závislosti od klienta užívateľa na druhej strane. Okrem toho, v prílohách mailov nemôžu byť veľké archívy. Ak uploadujete súbory niekoľkokrát denne, môže byť neustále spúšťanie FTP klienta, prehľadávanie disku, upload a následné ručné písanie adresy dosť nepohodlné. Dnes už existuje zopár utilít, ktoré tento postup automatizujú, nenašiel som však takú, ktorá by mi plne vyhovovala a poskytovala potrebné možnosti nastavenia s vlastným hostingom. V tomto postupe využijeme jednoduchý postup cez Automator alebo zložitejší s klientom Transmit.Spoločnosť Panic, vývojári FTP klienta Transmit poskytujú k programu zdarma aj Dashboard widget, ktorému stačí nakonfigurovať prístupové údaje k FTP serveru a pretiahnutím súborov na tento widget sa vykoná následujúca plne automatizovaná akcia:
- Natiahnete súbor na widget
- Spustí sa klient Transmit
- Uploadnú sa súbory (vidíte celý priebeh, čas, prenos, log)
- Klient sa zavrie
Chýba už len automatické vkladanie adresy do clipboardu pre okamžité použitie. Snažil som sa kontaktovať spoločnosť Panic, ale nedostal som žiadnu odpoveď na otázku, či by mohli túto funkciu do widgetu naprogramovať.
Sú 2 možnosti:
- Používať Automator akciu „Upload to FTP“, s kopírovaním do clipboardu
- Upraviť si Transmit widget (widgety sú písané v JavaScripte)
1. Automator – Upload to FTP
V prvom prípade si môžete stiahnuť Upload to FTP na AutomatorWorld a vytvoriť celú akciu podľa nasledujúceho príkladu:
Vyplňte správne údaje a uložte akciu ako Finder plugin. Odteraz keď kliknete pravým tlačidlom myši na súbor, v položke Automator budete mať k dispozícii túto akciu. Súbor sa uploadne a adresa skopíruje do schránky, za podmienky, že ste vytvorili akciu správne (Get Specified Finder Items, správne nastavený Upload to FTP, Copy to clipboard). Môžete označiť aj viac súborov a uploadnuť ich naraz. Adresy sa korektne uložia do schránky, každá v novom riadku.
Base URL označuje HTTP adresu/cestu kde sa súbory nachádzajú. Za ňu sa vloží meno súboru. Výsledok by bol v tomto prípade:
http://peter.xenon.sk/storage/subor.zip
Nevýhody: Nevidíte priebeh uploadu v % (len informáciu v menu, že prebieha akcia), nevidíte zostávajúci čas, a nemôžete uploadovať adresáre.
2. Úprava Transmit widgetu
Druhá možnosť je spomínaná úprava Transmit Widgetu. Postup vyzerá strašidelne, ale je to len pár jednoduchých krokov.
Postup:
- Textovým editorom otvorte súbor Users/menoužívateľa/Library/Widgets/Transmit.wdgt/Info.plist
- Vložte do tohto súboru nasledujúci kód, ak sa tam ešte nenachádza:
<key>AllowSystem</key> <true/>
- Otvorte súbor /Users/menoužívateľa/Library/Widgets/Transmit.wdgt/Transmit.js
- Vyľadajte nasledujúci kód, celý ho označte:
// Do the upload! if (window.widget && serverinput.value) { resultlast = ""; doUpload(server, userinput.value, passinput.value, pathinput.value, protocolinput.value, port, files_array); } } }
- Nahraďte (prepíšte) ho nasledujúcim kódom:
// Do the upload! if (window.widget && serverinput.value) { resultlast = ""; doUpload(server, userinput.value, passinput.value, pathinput.value, protocolinput.value, port, files_array); // Copy-to-clipboard addition by Henrik Nyh <http://henrik.nyh.se> // Copies URLs to clipboard, each on its own line // - Info.plist needs AllowSystem to be "true" // - Transmit URL encoded text as UTF-8 = non-ASCII characters break // - Copies before files are transferred (move to uploadFinished() if desired) var section = pathinput.value.split("/")[1]; // Path "henrik/foo" becomes "foo" var url = "http://adresa/cesta/"; for (var i = 0, j = files_array.length; i < j; i++) { files_array[i] = files_array[i].replace(/.*\//, ''); // Isolate filename files_array[i] = url + files_array[i]; // Tack onto URL files_array[i] = files_array[i].replace("'", "%27"); // URL encode single quotes } var copy_me = files_array.sort().join("\n"); widget.system('echo -en "' + copy_me + '" | pbcopy', null); // Copy-to-clipboard addition ends }}}
- Namiesto http://adresa/cesta/ si doplňte vlastnú adresu, v mojom príklade by to bolo rovnako ako v Automatore:
"http://peter.xenon.sk/storage/"
Nezabudnite lomítko na konci a adresu ponechajte v úvodzovkách.
Autorom tohto skriptu je švédsky blogger Henrik Nyh. Nedostatok je v tomto prípade nemožnosť vytvoriť viac widgetov Transmitu s odlišnými servermi a odlišným nastavením.
K dispozícii sú ešte podobné utility ako napr. Captain FTP Widget, Cyberduck Upload Widget, DropSend. Ani tieto však nekopíruju adresy do clipboardu. Dragster je zaujímavý a dokáže to, no je shareware a je nepravedpodobné, že si k Transmitu budete kupovať kvôli kopírovaniu adries do clipboardu aj tento program.
Rýchlosť a praktickosť uploadov týmto spôsobom oceníte, aj keď FTP využívate len zriedka…
komentárov
dakujem za dobry tip, super vec :)
Dakaujem aj ja, dobry tippp
Tohle jsem zrovna dnes řešil, díky za návod jak na to. :)
ten widget je vyborna vec, pouzivam ho odtedy co mam mac.
ale prijal by som kebyze to po dokonceni uploadu to samo zavre transmit.
neviete ci sa to da nastavit nejako ?
po ediacii kodu widgetu sa mi dany widget na dashboard takpovediac zamrzne, je tam iba ikonka zemegule pod autom a uz ho nemozem ani nastavit a nefunguje. Urobil som vsetko presne podla navodu. Vdaka za pomoc
Martin: Pridaj na úplny koniec po poslednej zátvorke ešte dalšie 2. Prepísaný kód teda nebude končiť „// Copy-to-clipboard addition ends
}“ ale „// Copy-to-clipboard addition ends }}}“.
Resp. prejdi postup ešte raz, aktualizoval som ho.
Super, moc dakujem, vsetko funguje tak ako ma!