سلام خدمت استاد اردوخانی عزیز، یک سوالی داشتم ممنون میشم کمک کنید
بنده یک قسمتی توی یک سایتی دارم که فایل پیوست داره و خوب برام سوال بود چطور باید این فایل رو قرار بدم لینک دانلود بزارم یا همینطوری URL فایل رو قرار بدم همونطوری که تصویر قرار میدادیم
خلاصه که خودم تصمیم گرفتم لینک دانلود بزارم و بعد از کلی سرچ به نتیجه زیر رسیدم:
# views.py
def download_product_attached_file(request, short_link_code):
product = Product.objects.filter(short_link_code=short_link_code).first()
if product is None:
return Http404('فایل مورد نظر یافت نشد')
file_path = product.attached_file.path
file_name = file_path.split('/')[-1]
file_path_ascii = unidecode(file_path)
mime_type = magic.from_file(file_path_ascii, mime=True)
file_response = FileResponse(open(file_path, 'rb'))
file_response['Content-Disposition'] = f'attachment; filename="{smart_str(file_nam e)}"'
file_response['Content-Type'] = mime_type
return file_response
# urls.py
urlpatterns = [
path('dl/products-attachment/<str:short_link_code>', download_product_attached_file,
name='download-attachment-files')
]
و خوب خواستم بدونم اصلا باید از این روش استفاده کرد؟
این کد بهینه هست و مشکلی نداره؟
من یک فیلدی برای هر محصول قرار دادم به نام short link code و این یک کد ۵ رقمی یونیک رو در خودش داره و من از این طریق محصولم رو شناسایی میکنم
مورد بعدی اینکه این کد وقتی اسم فایل فارسی است خطا میده و خوب مشکلی با این ندارم چون به هر حال میخوام همین رو ازتون بپرسم که چطوری میشه نام فایل رو موقع آپلود تغییر داد
و بعد این پیکیج magic چون واقعا نصبشم سخت بود مشکلی در سرور به وجود نمیاد؟
برای من ابهاماتی هست مثلا چرا از ای دی بجای کد پنج رقمی استفاده نمی کنید و یااصلا چرا باید از magic(اگه درست فهمیده باشم برای تشخیص نوع فایله) استفاده می کنید و این file_response دقیقا چیکار می کنه شرمنده دارم سوال می پرسم ولی خودمم دوست دارم بدونم
خب منم بخشی از کد رو از اینترنت در آوردم اما به صورت کلی این magic همون نوع فایل رو تشخیص میده و استفاده ازش اجباری نیست اما مثلا من این لینک دانلود رو روی فایل txt امتحان کردم فایل دانلود نمی شد تو مرورگر باز میشد و خوب چندتا سرچ زدم گفته بودن از magic استفاده کنید file_response هم خود فایل هست دیگه مشخصاتشو ست کردن فرستادن سمت کاربر اگه درست فهمیده باشم
در کل من فایل هام رو نامشون رو خودم در سایت به یه رشته ۴۰ کارکتری یونیک تغییر میدم و این مشکل فارسی بودن نام ماسمالیسیون شده به قول استاد مدائنی عزیز.
در رابطه اینکه چرا از short_link_code استفاده شده هم حرفی ندارم همینجوری از این دارم استفاده میکنم دلیلی نداره
سلام دوست من
متاسفانه بنده با این پکیج کار نکردم و اطلاعی از ساختارش ندارم. به نظر من بهتره از ساختار داخلی خود جنگو استفاده کنین
خیلی ممنونم