• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل با کاراکتر فاصله و نام‌های unicode در فایل های آپلود شده
#1
سلام،

وقتی فایلی آپلود میکنم که تماما دارای حروف الفبای لاتین هست هیچ مشکلی با اون فایل ندارم اما وقتی فایل رو فارسی مینویسم و آپلود میکنم، بعد از آپلود نامش روی سرور که رفته حذف میشه و فقط یدونه .mp3 مثلا میمونه.


همینطور فایل هایی که دارای کاراکتر فاصله هستند هم معتبر نیستن. برای اعتبار سنجی از شرط زیر استفاده میکنم.

کد پی‌اچ‌پی:
if(filter_var($filenameFILTER_VALIDATE_URLFILTER_FLAG_PATH_REQUIRED)) 


** من urlencode() رو تست کردم و آپلود میشه ولی باز معتبر نیست از اون مهم تر جای فاصله + میندازه که نمایش داده میشه و من میخوام نمایش داده نشه یه چیزی مثل % 20 که کد فاصله هست. (اگر اشتباه نکنم)

بنظر شما برای حل دو مشکل باید چیکار کنم؟
غایب
  پاسخ
تشکر شده توسط :
#2
سوالت خیلی کلی هست. و راه های زیادی برای اینکار هست.
اما مطمئنم که تو مراحل آپلود فایل با اس فارسی، فایل آپلود میشه و در آرایه $_FILE مقدار دهی هم میشه. هر مشکلی دارید از این مرحله شروع میشه. فرضا اگر pathinfo استفاده کردید. فکر میکنم با نام فایل های ینکود مشکل داشته باشه.

من اگر قرار باشه مشخصات فایل رو در جدول نگهداری کنم. فایل رو حتما تغییر نام میدم به یک رشته از نوع uuid بعد نام جدید و رو به همراه اسم واقعی ذخیره میکنم. اینجوری مشکلات امنیتی مثل آپلود شل. اگر سیستم داشته باشه. نمی تونه به راحتی حدس بزنه نام فایل چی هست و نمی تونه به اون دسترسی پیدا کنه
  پاسخ
تشکر شده توسط : ali786
#3
نقل قول: فرضا اگر pathinfo استفاده کردید.
نه استفاده نکردم.

نقل قول:من اگر قرار باشه مشخصات فایل رو در جدول نگهداری کنم. فایل رو حتما تغییر نام میدم به یک رشته از نوع uuid بعد نام جدید و رو به همراه اسم واقعی ذخیره میکنم. اینجوری مشکلات امنیتی مثل آپلود شل. اگر سیستم داشته باشه. نمی تونه به راحتی حدس بزنه نام فایل چی هست و نمی تونه به اون دسترسی پیدا کنه
این اسکریپتی که من نوشتم قرار نیست دیتابیس بخشی ازش باشه. همه چی بدون اون انجام میشه (به درخواست کارفرما) .

من دارم از ftp php کمک میگیرم. من تست کردم. فایل با نام فارسی رو آپلود میکنه. نام رو درست کلاینت میفرسته و سرورم درست میگیره. (ریسپانس رو دیدم) موقع آپلود همون نام دریافتی رو میدم به تابع مربوطه. توی این مسیر هیچ مشکلی نیست. حالا من توی stackoverflow هم مطرح کردم که دو نفر نظر مشابهی دارن. سیستم عامل نصب شده رو سرور که centOS 5.6 فکر کنم هست نگارشش. و filesystem type رو هنوز جوابشو ندادن که چیه. میگن مشکل هرچی هست مربوط به سرور میشه.
غایب
  پاسخ
تشکر شده توسط :
#4
از فایل منجر پنل هاست استفاده کن ببین رو اون فایل مشکلی دارند یا نه . اگر داشتن می تونه مشکل از سرور و filesystem type باشه.
  پاسخ
تشکر شده توسط : ali786
#5
اینو امتحان کن ببین:
کد پی‌اچ‌پی:
$file_name rawurlencode(str_replace(" ","%20",htmlspecialchars_decode($_FILES["file"]["name"]))); 
موفق باشید.
  پاسخ
تشکر شده توسط :
#6
نقل قول:اینو امتحان کن ببین:
نه هنوز فاصله تو نام فایل معتبر نیست.
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان