Προς το περιεχόμενο

Linux web server & greek filenames


bikey77

Προτεινόμενες αναρτήσεις

Δημοσ.

Με ποιον τρόπο μπορεί κάποιος να ανεβάσει ένα αρχείο με ελληνικό όνομα σε linux server;

Συχνά κάποιοι χρήστες ανεβάζουν αρχεία/εικόνες κλπ με ελληνικό όνομα (πχ βιογραφικό.doc, εικόνα.gif) και αυτό δε γίνεται δεκτό. Ακούω λύσεις και προτάσεις! :rolleyes:

Δημοσ.

Τι εννοείς δε γίνεται δεκτό; Σου βγάζει κάποιο σφάλμα; Αυτά που αποθηκεύονται τελικά, πως είναι το όνομά τους, κανονικό ή αλλοιωμένο;

Δημοσ.

Δε το διετύπωσα σωστά.... :unsure:

 

Ανεβαίνει κανονικά το αρχείο αλλά δε φαίνεται στον 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.

Δημοσ.

Το όνομα του αρχείου το διαβάζεις απευθείας από το φάκελο (με readdir ή κάπως έτσι) ή το αποθηκεύεις στη βάση δεδομένων και από εκεί το παίρνεις για να το εμφανίσεις στη σελίδα ?

Στη πρώτη περίπτωση, θα πρέπει το αρχείο php που εμφανίζει το όνομα θα πρέπει να έχει το ίδιο encoding που έχεις δηλώσει και στο header της σελίδας.

Στη δεύτερη περίπτωση δοκίμασε να τρέξεις τα παρακάτω queries πριν ξεκινήσεις να διαβάσεις το αρχείο.

 

mysql_query('set character set utf8');

mysql_query("SET NAMES 'utf8'");

Δημοσ.

Το όνομα του αρχείου το διαβάζεις απευθείας από το φάκελο (με readdir ή κάπως έτσι) ή το αποθηκεύεις στη βάση δεδομένων και από εκεί το παίρνεις για να το εμφανίσεις στη σελίδα ?

Στη πρώτη περίπτωση, θα πρέπει το αρχείο php που εμφανίζει το όνομα θα πρέπει να έχει το ίδιο encoding που έχεις δηλώσει και στο header της σελίδας.

Στη δεύτερη περίπτωση δοκίμασε να τρέξεις τα παρακάτω queries πριν ξεκινήσεις να διαβάσεις το αρχείο.

 

mysql_query('set character set utf8');

mysql_query("SET NAMES 'utf8'");

Δε μπορώ να καταλάβω τι σχέση έχουν queries της mysql με το upload των αρχείων...

@bikey77: Θα κάνεις έναν κόπο να μας δώσεις και τον κώδικα που έχεις στη σελίδα με το upload;

Δημοσ.

Η βάση δεν έχει πρόβλημα, όλα τα 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).

Δημοσ.

Δε μπορώ να καταλάβω τι σχέση έχουν queries της mysql με το upload των αρχείων...

@bikey77: Θα κάνεις έναν κόπο να μας δώσεις και τον κώδικα που έχεις στη σελίδα με το upload;

 

Δεν είχα καταλάβει από που διάβαζες το όνομα του αρχείου, γι' αυτό και πήγε το μυαλό μου στη βάση δεδομένων.

Το encoding που έχει το αρχείο που κάνει το upload και εμφανίζει το όνομα της εικόνας πρέπει να είναι ίδιο με το charset που έχεις ορίσει στο header της σελίδας.

Δημοσ.

Δεν είχα καταλάβει από που διάβαζες το όνομα του αρχείου, γι' αυτό και πήγε το μυαλό μου στη βάση δεδομένων.

Το encoding που έχει το αρχείο που κάνει το upload και εμφανίζει το όνομα της εικόνας πρέπει να είναι ίδιο με το charset που έχεις ορίσει στο header της σελίδας.

 

Να το δοκιμάσω... δηλ προτείνεις το όνομα του αρχείου να δίνεται με urlencode($filename) αν κατάλαβα καλά?

Στη βάση πως να το αποθηκεύω? Και όταν θέλω να το εμφανίσω στη σελίδα με ποια function να εμφανίζω το όνομα του αρχείου?

Δημοσ.

Οχι. Αν χρησιμοποιείς utf8 encoding στη σελίδα σου (δηλ. έχεις στο header <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />), άνοιξε το αρχείο που χρησιμοποιείς με το notepad++ και πήγαινε στην επιλογή Encoding->Convert to UTF-8 (Μορφή->Μετατροπή σε UTF-8) και αποθήκευσε το.

Δημοσ.

Όχι, δε χρησιμοποιώ utf-8 στο συγκεκριμένο site... iso-8859-7 χρησιμοποιώ.

Αναφέρεσαι στο αρχείο που κάνει upload την εικόνα ή εκείνη που την εμφανίζει;

Δημοσ.

Για το αρχείο που την εμφανίζει λέω.

Αν μπορείς στείλε τα αρχεία που χρησιμοποιείς να τα δούμε πιο αναλυτικά.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...