Apabila menggunakan PHP untuk memuat naik fail, jika nama fail mengandungi aksara Cina, muat naik mungkin gagal. Ini kerana dalam protokol HTTP, aksara Cina dalam nama fail perlu dikodkan untuk dihantar dengan betul, dan PHP tidak melakukan pengekodan ini secara lalai, sekali gus menyebabkan muat naik gagal.
Sekarang, mari kita bincangkan cara menyelesaikan masalah ini.
Apabila kami menggunakan PHP untuk memuat naik fail, jika nama fail yang dimuat naik mengandungi aksara Cina, muat naik mungkin melaporkan ralat Mesej ralat biasanya adalah beberapa aksara yang tidak dapat difahami. Punca ralat tidak dapat ditentukan dengan tepat.
Sebagai contoh, kami cuba memuat naik fail bernama "Test Image.jpg" semasa proses muat naik, jika nama fail mengandungi aksara Cina, seperti "Test Image (Chinese).jpg", muat naik. mungkin gagal.
Warning: move_uploaded_file(): Unable to move '/tmp/php12efan' to '/var/www/html/upload/测试图片(中文).jpg'
Seperti yang anda lihat, nama fail yang dimuat naik tidak dikodkan dalam mana-mana cara.
Content-Disposition: form-data; name="file"; filename="测试图片(中文).jpg"
Dalam kod di atas, kami menggunakan fungsi
untuk menukar nama fail daripada pengekodan UTF-8 kepada pengekodan ISO-8859-1 dan mendapat yang betul nama fail, dan kemudian Muat naik fail itu. Kelemahan kaedah ini ialah ia agak rumit dan memerlukan penukaran pengekodan manual, yang tidak cukup mudah.$file = $_FILES['file']; $filename = iconv('UTF-8', 'ISO-8859-1', $file['name']); move_uploaded_file($file['tmp_name'], '/var/www/html/upload/' . $filename);
Pilihan 2: Ubah suai fail konfigurasi PHP iconv
Cari fail konfigurasi php.ini Lokasi mungkin berbeza-beza bergantung pada sistem yang berbeza.
; Default charset for auto content type. ; http://php.net/default-charset default_charset = "UTF-8"
; Default charset for auto content type.
; Add charset=utf-8 to Content-Type header for files with non-ASCII names ; that have been encoded using RFC 2231 suhosin.upload.unicode.semantics=1
RingkasanSuhosin
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika saya mendapat ralat semasa memuat naik gambar dengan aksara Cina dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!