bikey77 Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Με ποιον τρόπο μπορεί κάποιος να ανεβάσει ένα αρχείο με ελληνικό όνομα σε linux server; Συχνά κάποιοι χρήστες ανεβάζουν αρχεία/εικόνες κλπ με ελληνικό όνομα (πχ βιογραφικό.doc, εικόνα.gif) και αυτό δε γίνεται δεκτό. Ακούω λύσεις και προτάσεις!
dewn735 Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Τι εννοείς δε γίνεται δεκτό; Σου βγάζει κάποιο σφάλμα; Αυτά που αποθηκεύονται τελικά, πως είναι το όνομά τους, κανονικό ή αλλοιωμένο;
bikey77 Δημοσ. 14 Δεκεμβρίου 2010 Μέλος Δημοσ. 14 Δεκεμβρίου 2010 Δε το διετύπωσα σωστά.... Ανεβαίνει κανονικά το αρχείο αλλά δε φαίνεται στον browser. Το όνομα του αρχείου κανονικά είναι >/images/products/l_gr μακρυμανικη Uppercut Clothes F1LS18 WHITE 4tvv.jpg αλλά στον browser φαίνεται ως > /images/products/g_Billabong gr μακÏυμανικη Uppercut Clothes F1LS18 WHITE nc5e.jpg Πρέπει να κάνω κάποια αλλαγή στο encoding του αρχείου πριν κάνω upload? To site είναι σε PHP.
kostasxx Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Το όνομα του αρχείου το διαβάζεις απευθείας από το φάκελο (με readdir ή κάπως έτσι) ή το αποθηκεύεις στη βάση δεδομένων και από εκεί το παίρνεις για να το εμφανίσεις στη σελίδα ? Στη πρώτη περίπτωση, θα πρέπει το αρχείο php που εμφανίζει το όνομα θα πρέπει να έχει το ίδιο encoding που έχεις δηλώσει και στο header της σελίδας. Στη δεύτερη περίπτωση δοκίμασε να τρέξεις τα παρακάτω queries πριν ξεκινήσεις να διαβάσεις το αρχείο. mysql_query('set character set utf8'); mysql_query("SET NAMES 'utf8'");
dewn735 Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Το όνομα του αρχείου το διαβάζεις απευθείας από το φάκελο (με readdir ή κάπως έτσι) ή το αποθηκεύεις στη βάση δεδομένων και από εκεί το παίρνεις για να το εμφανίσεις στη σελίδα ? Στη πρώτη περίπτωση, θα πρέπει το αρχείο php που εμφανίζει το όνομα θα πρέπει να έχει το ίδιο encoding που έχεις δηλώσει και στο header της σελίδας. Στη δεύτερη περίπτωση δοκίμασε να τρέξεις τα παρακάτω queries πριν ξεκινήσεις να διαβάσεις το αρχείο. mysql_query('set character set utf8'); mysql_query("SET NAMES 'utf8'"); Δε μπορώ να καταλάβω τι σχέση έχουν queries της mysql με το upload των αρχείων... @bikey77: Θα κάνεις έναν κόπο να μας δώσεις και τον κώδικα που έχεις στη σελίδα με το upload;
bikey77 Δημοσ. 14 Δεκεμβρίου 2010 Μέλος Δημοσ. 14 Δεκεμβρίου 2010 Η βάση δεν έχει πρόβλημα, όλα τα data εμφανίζονται κανονικά... μιλάμε μόνο για το πρόβλημα της ονοματολογίας των αρχείων. Ο κώδικάς μου είναι ο εξής: > $uploadedfile = $_FILES['photo']['tmp_name']; $pos = strrpos($_FILES['photo']['name'], "."); $ext = substr($_FILES['photo']['name'], $pos+1, (strlen($_FILES['photo']['name'])-$pos+1)); $imgname = $_POST['name']." ".$_POST['productcode']." ".genRandomString().".".$ext; if($ext=='jpg' || $ext=='jpeg' || $ext=='JPG') $src = imagecreatefromjpeg($uploadedfile); if($ext=='gif') $src = imagecreatefromgif($uploadedfile); if($ext=='png') $src = imagecreatefrompng($uploadedfile); list($width,$height)=getimagesize($uploadedfile); $newwidth=140; $newheight=($height/$width)*140; $tmp=imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); $filename = "../images/products/t_".$imgname; if($ext=='jpg' || $ext=='jpeg' || $ext=='JPG') imagejpeg($tmp,$filename,100); if($ext=='gif') imagegif($tmp,$filename,100); if($ext=='png') imagepng($tmp,$filename,100); imagedestroy($src); imagedestroy($tmp); όπου $_POST['name'] ο τίτλος του προϊόντος που μπορεί να περιέχει και Ελληνικά (έχει γίνει έτσι ώστε να έχουμε καλύτερα results και στο Google image search).
kostasxx Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Δε μπορώ να καταλάβω τι σχέση έχουν queries της mysql με το upload των αρχείων... @bikey77: Θα κάνεις έναν κόπο να μας δώσεις και τον κώδικα που έχεις στη σελίδα με το upload; Δεν είχα καταλάβει από που διάβαζες το όνομα του αρχείου, γι' αυτό και πήγε το μυαλό μου στη βάση δεδομένων. Το encoding που έχει το αρχείο που κάνει το upload και εμφανίζει το όνομα της εικόνας πρέπει να είναι ίδιο με το charset που έχεις ορίσει στο header της σελίδας.
bikey77 Δημοσ. 14 Δεκεμβρίου 2010 Μέλος Δημοσ. 14 Δεκεμβρίου 2010 Δεν είχα καταλάβει από που διάβαζες το όνομα του αρχείου, γι' αυτό και πήγε το μυαλό μου στη βάση δεδομένων. Το encoding που έχει το αρχείο που κάνει το upload και εμφανίζει το όνομα της εικόνας πρέπει να είναι ίδιο με το charset που έχεις ορίσει στο header της σελίδας. Να το δοκιμάσω... δηλ προτείνεις το όνομα του αρχείου να δίνεται με urlencode($filename) αν κατάλαβα καλά? Στη βάση πως να το αποθηκεύω? Και όταν θέλω να το εμφανίσω στη σελίδα με ποια function να εμφανίζω το όνομα του αρχείου?
kostasxx Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Οχι. Αν χρησιμοποιείς utf8 encoding στη σελίδα σου (δηλ. έχεις στο header <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />), άνοιξε το αρχείο που χρησιμοποιείς με το notepad++ και πήγαινε στην επιλογή Encoding->Convert to UTF-8 (Μορφή->Μετατροπή σε UTF-8) και αποθήκευσε το.
bikey77 Δημοσ. 14 Δεκεμβρίου 2010 Μέλος Δημοσ. 14 Δεκεμβρίου 2010 Όχι, δε χρησιμοποιώ utf-8 στο συγκεκριμένο site... iso-8859-7 χρησιμοποιώ. Αναφέρεσαι στο αρχείο που κάνει upload την εικόνα ή εκείνη που την εμφανίζει;
kostasxx Δημοσ. 14 Δεκεμβρίου 2010 Δημοσ. 14 Δεκεμβρίου 2010 Για το αρχείο που την εμφανίζει λέω. Αν μπορείς στείλε τα αρχεία που χρησιμοποιείς να τα δούμε πιο αναλυτικά.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.