DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Programiranje (http://www.devprotalk.com/forumdisplay.php?f=23)
-   -   Download fajlova sa non-ascii imenima (http://www.devprotalk.com/showthread.php?t=1184)

jablan 30. 06. 2006. 10:23

Download fajlova sa non-ascii imenima
 
Dakle, pitanje je vezano za veb programiranje... Da li je neko od vas imao problema sa serviranjem fajlova koji imaju neke non-ascii (unicode) karaktere u imenu? Imam situaciju da korisnici downloaduju fajlove preko neke skripte, nebitno da li se fajlovi vuku sa diska ili iz baze. Pre nego što pošaljem fajl šaljem Content-disposition HTTP header koji između ostalog navodi i ime fajla (da se korisniku ne bi pri snimanju ponudilo ime FileWriteToUser.aspx). Nažalost, Content-disposition ne podržava enkodiranje imena fajla. Probao sam sa urlencode, ali se većina brauzera ne snalazi (nude ime sa sve procentima).

Nadam se da sam bio dovoljno jasan. Kako vi rešavate ovaj problem, ako ga rešavate? Postoji li neki način osim rewrite-ovanja URL-a?

ivanhoe 30. 06. 2006. 18:15

a sto ne prebacis ime fajla da bude cisti ascii, pre nego sto ga dodas u header ?

Ionako nije zdrava ideja snimati fajlove sa non ascii znacima u imenu, jednom sam u WinXP-u imao grdnih problema da obrisem fajl cije je ime bilo cirilicno. Otvaranje i sve ostalo je radilo, ali brisanje nije htelo.

oliver 30. 06. 2006. 21:34

ili, jos bolje, prilikom uploada preimenovati u nesto "normalno", i rijesio si se muke u samom startu.

zextra 30. 06. 2006. 23:15

Verovatno covek ima debeo razlog zasto je to tako kako jeste.

Mogao bi eventualno da replacujes filename pre nego sto ga strpas u header, npr sve non-ascii karaktere (zapravo, ovo je malo gruba podela.. ascii karakteri su svi od 0 do 255, a to nije ono sto hoces, siguran sam :P) replacujes sa underscore ili necim drugim, jos zgodnijim.

jablan 02. 07. 2006. 09:27

Hvala na predlozima, ali ništa mi od ovog ne pije vodu. Da konvertujem ne mogu, jer konverzija nije jednoznačna (nisam nikad video neku funkciju koja ovo radi), u pitanju je višejezična aplikacija (zapravo CMS platforma) i ne zna se koji će se jezici sve koristiti. Zamena underscorovima mi takođe nije ok, pogotovu ako su svi karakteri iz imena izvan ascii (npr ćirilični).

Po svemu sudeći moraću da radim URL rewrite (ako uopšte odlučimo da pokrivamo ovaj problem).

Pedja 02. 07. 2006. 11:51

NE vidim sta je problem zameniti nezgodne karaktere nizom cisth asci znakova, tako da se zadrzi jednoznacnost a ostvi prostor da se restaurira tacno ime datoteke.

Ja bih recimo pre proveravao ime datoteke i ako sadrzi neki nezgodan znak, prekidao bih operaciju i korisniku prikjavljivao gresku.

Treca opcija je da datotekama sam dajes imena. Ne moras zadrzavati imena koja im daju korisnici.

zextra 02. 07. 2006. 12:11

@Pedja: covek je upravo naveo primer da se ime fajla moze sastojati skroz iz cirilicnih karaktera, pa bi dobio fajl koji se zove, npr ____ _ ______-____.doc.

Prilicno jasan naziv, zar ne? :D

ivanhoe 02. 07. 2006. 15:34

a da se napise funckija koja radi univerzalno prevodjenje tako sto za svaki jezik koji se koristi definises slova koja treba prevesti i njihove ascii parove (nema toga toliko puno), i onda samo pogledas koji je jezik u pitanju, ucitas parove za taj jezik i prevedes ih...

Petar Marić 02. 07. 2006. 22:15

Heh, pre mesečak dana se pojavio sličan problem na django dev mail listi. Naime, žalio sam se što slugify js funkcija "jede" sve karaktere koji su izvan dozvoljenog ASCII opsega, te samim tim izostavlja unicode karaktere.

Baci pogled na tu diskusiju, možda dobiješ koju ideju ;)

Pedja 03. 07. 2006. 00:52

Citat:

Originalno napisao zextra
@Pedja: covek je upravo naveo primer da se ime fajla moze sastojati skroz iz cirilicnih karaktera, pa bi dobio fajl koji se zove, npr ____ _ ______-____.doc.
Prilicno jasan naziv, zar ne? :D

Obrati paznju da sam govorio o zameni problematicnih znakova odgovarajucim nizom citkih a ne da svi budu zamenjeni jednim te istim kao u tvom primeru.


Vreme je GMT +2. Trenutno vreme je 02:57.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.