জ্যাঙ্গো ডাউনলোডযোগ্য ফাইল পরিবেশন করা হচ্ছে


245

আমি চাই সাইটের ব্যবহারকারীরা ফাইলগুলি ডাউনলোড করতে সক্ষম হোন যার পাথগুলি অস্পষ্ট তাই সেগুলি সরাসরি ডাউনলোড করা যায় না।

উদাহরণস্বরূপ, আমি ইউআরএলটি এমন কিছু হতে চাই: http://example.com/download/?f=somefile.txt

এবং সার্ভারে, আমি জানি যে সমস্ত ডাউনলোডযোগ্য ফাইল ফোল্ডারে থাকে /home/user/files/

জ্যাঙ্গো ডাউনলোড করার জন্য কোনও ফাইল ইউআরএল এবং এটি প্রদর্শনের জন্য দেখার চেষ্টা করার বিপরীতে ডাউনলোড করার জন্য কী উপায় আছে?


2
আপনি কেন আপাচি এটি করতে ব্যবহার করছেন না? অ্যাপাচি স্থির সামগ্রীটি জ্যাঙ্গো যা পারত তার চেয়ে দ্রুত এবং আরও সহজভাবে পরিবেশন করে।
এস .লট

22
আমি অ্যাপাচি ব্যবহার করছি না কারণ আমি জাঙ্গোর ভিত্তিতে থাকা অনুমতি ছাড়া ফাইলগুলি অ্যাক্সেসযোগ্য চাই না।
অভিমান

3
অ্যাকাউন্ট ব্যবহারকারীর অনুমতি বা নিতে চান তাহলে আপনাকে জ্যাঙ্গো দৃষ্টিভঙ্গি মাধ্যমে ফাইল পরিবেশন করা আছে
Łukasz

127
ঠিক এই কারণেই আমি এই প্রশ্নটি করছি।
অভিমান

উত্তর:


189

"উভয় বিশ্বের সেরা" জন্য আপনি এসলট এর সমাধানটি xsendfile মডিউলটির সাথে একত্রিত করতে পারেন : জ্যাঞ্জো ফাইলের (বা ফাইলটি নিজেই) পাথ তৈরি করে, তবে প্রকৃত ফাইল পরিবেশন করা অ্যাপাচি / লাইটটিপিডি দ্বারা পরিচালিত হয়। একবার আপনি mod_xsendfile সেট আপ করার পরে, আপনার ভিউয়ের সাথে সংহত করার জন্য কয়েকটি লাইনের কোড লাগবে:

from django.utils.encoding import smart_str

response = HttpResponse(mimetype='application/force-download') # mimetype is replaced by content_type for django 1.7
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(path_to_file)
# It's usually a good idea to set the 'Content-Length' header too.
# You can also set any other required headers: Cache-Control, etc.
return response

অবশ্যই, এটি কেবলমাত্র তখনই কাজ করবে যদি আপনার নিজের সার্ভারের উপর নিয়ন্ত্রণ থাকে বা আপনার হোস্টিং সংস্থার ইতিমধ্যে মোড_এক্সসেন্ডফাইল সেট আপ রয়েছে।

সম্পাদনা করুন:

জিমগো 1.7 এর জন্য কন্টেন্ট_ টাইপ দ্বারা মিমি টাইপ প্রতিস্থাপন করা হয়েছে

response = HttpResponse(content_type='application/force-download')  

সম্পাদনা করুন: জন্য nginxপরীক্ষা এই , এটি ব্যবহার করে X-Accel-Redirectএর পরিবর্তে apacheএক্স-Sendfile হেডার।


6
যদি আপনার ফাইলের নাম, বা path_to_file- এ "ä" বা "ö" এর মতো নন-এসিআই অক্ষর অন্তর্ভুক্ত থাকে তবে অ্যাপাচি smart_strমডিউল এক্স-সেন্ডফিলটি স্মার্ট_স্ট্রোড এনকোডেড স্ট্রিংটি ডিকোড করতে পারে না বলে এটি কাজ করে না। সুতরাং উদাহরণস্বরূপ "Örinää.mp3" ফাইলটি পরিবেশিত হতে পারে না। এবং যদি কেউ স্মার্ট_স্ট্রি বাদ দেয় তবে জ্যাঙ্গো নিজেই এএসসিআই এনকোডিং ত্রুটি ছুঁড়ে দেয় কারণ পাঠানোর আগে সমস্ত শিরোনাম ascii বিন্যাসে এনকোড করা থাকে। এই সমস্যাটি থেকে বাঁচতে আমি কেবল জানি যে কেবলমাত্র এসকিআই রয়েছে তাদের এক্স-সেন্ডফাইলে ফাইলের নামগুলি হ্রাস করা।
সিয়ানটিক

3
আরও স্পষ্ট করার জন্য: এস.লোটের সরল উদাহরণ রয়েছে, কেবল জাজানো থেকে সরাসরি ফাইল পরিবেশন করা, অন্য কোনও সেটআপের প্রয়োজন নেই। elo80ka এর আরও কার্যকর উদাহরণ রয়েছে, যেখানে ওয়েব-সার্ভার স্ট্যাটিক ফাইলগুলি পরিচালনা করে এবং জ্যাঞ্জোর দরকার নেই। আধুনিকটির পারফরম্যান্স আরও ভাল, তবে আরও সেটআপের প্রয়োজন হতে পারে। দুজনেরই জায়গা আছে।
রকেটমনকিগুলি

1
@ সায়েন্টিক, এনকোডিং সমস্যার সমাধান কী দেখায় তার জন্য বিটিম্বির উত্তর দেখুন।
mlissner

এই সমাধানটি কি নিম্নলিখিত ওয়েব সার্ভার কনফিগারেশনের সাথে কাজ করে? ব্যাক-এন্ড: 2 বা ততোধিক অ্যাপাচি + Mod_wsgi স্বতন্ত্র (ভিপিএস) সার্ভার একে অপরের প্রতিলিপি তৈরি করতে সেট আপ করে। ফ্রন্ট-এন্ড: 1 টি এনগিনেক্স প্রক্সি (ভিপিএস) সার্ভারটি আপস্ট্রিম লোড ব্যালেন্সিং ব্যবহার করে, রাউন্ড-রবিন করছে।
ড্যানিয়েল


88

একটি "ডাউনলোড" হ'ল একটি এইচটিটিপি শিরোনাম পরিবর্তন।

ডাউনলোডের মাধ্যমে কীভাবে প্রতিক্রিয়া জানানো যায় তার জন্য http://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment দেখুন ।

আপনার কেবলমাত্র একটি ইউআরএল সংজ্ঞা প্রয়োজন "/download"

অনুরোধের GETবা POSTঅভিধানের "f=somefile.txt"তথ্য থাকবে।

আপনার দর্শন ফাংশনটি কেবল " f" মানের সাথে বেস পাথটি একত্রিত করবে , ফাইলটি খুলবে, একটি প্রতিক্রিয়া অবজেক্ট তৈরি করবে এবং ফিরে আসবে। এটি কোডের 12 টি লাইনের চেয়ে কম হওয়া উচিত।


49
এটি মূলত সঠিক (সহজ) উত্তর, তবে একটি সতর্কতা - ফাইলের নামটিকে প্যারামিটার হিসাবে পাস করার অর্থ ব্যবহারকারী কোনও ফাইলই সম্ভাব্যভাবে ডাউনলোড করতে পারবেন (যেমন আপনি যদি "f = / etc / passwd" পাস করেন তবে কি অনেক আছে) এটি (ব্যবহারকারীর অনুমতি ইত্যাদি) প্রতিরোধে সহায়তা করে এমন কিছু বিষয়, তবে এই স্পষ্টত তবে সাধারণ সুরক্ষা ঝুঁকি সম্পর্কে সচেতন হন। এটি মূলত বৈধকরণের ইনপুটটির কেবলমাত্র একটি উপসেট: আপনি যদি কোনও ভিউতে কোনও ফাইলের সাথে পাস করেন তবে সেই ভিউতে ফাইলের নামটি চেক করুন!
রকেটমনকিগুলি

9
এই সুরক্ষা উদ্বেগের জন্য একটি খুব সাধারণ সমাধান:filepath = filepath.replace('..', '').replace('/', '')
দ্বৈততা_

7
আপনি যদি ফাইল তথ্য সংরক্ষণের জন্য কোনও টেবিল ব্যবহার করেন, যার মধ্যে ব্যবহারকারীরা এটি ডাউনলোড করতে সক্ষম হবেন, তবে আপনাকে যা পাঠাতে হবে তা হ'ল ফাইলের নাম নয় প্রাথমিক অ্যাপ্লিকেশন এবং অ্যাপটি সিদ্ধান্ত নেবে যে কী করা উচিত।
এডওয়ার্ড নেওয়েল

30

খুব সহজ তবে দক্ষ বা স্কেলযোগ্য সমাধানের জন্য আপনি কেবল বিল্ট ইন জাঙ্গো serveভিউটি ব্যবহার করতে পারেন । এটি দ্রুত প্রোটোটাইপ বা এক বন্ধ কাজের জন্য দুর্দান্ত, তবে এই প্রশ্ন জুড়ে যেমন উল্লেখ করা হয়েছে, আপনার উত্পাদনে অ্যাপাচি বা এনজিনেক্সের মতো কিছু ব্যবহার করা উচিত।

from django.views.static import serve
filepath = '/some/path/to/local/file.txt'
return serve(request, os.path.basename(filepath), os.path.dirname(filepath))

উইন্ডোজে পরীক্ষার জন্য ফ্যালব্যাক সরবরাহের জন্যও খুব দরকারী।
আমির আলী আকবরী

আমি এ ডেস্কটপ ক্লায়েন্টের মতো ধরণের কাজ করার উদ্দেশ্যে একটি স্ট্যান্ডেলোন জাঙ্গো প্রকল্প করছি, এবং এটি পুরোপুরি কাজ করেছে। ধন্যবাদ!
ডায়াগোরোকব

1
কেন এটি দক্ষ নয়?
লিঙ্কিং

2
@ জিংকিং কারণ ফাইলগুলি সাধারণত জ্যাঙ্গো প্রক্রিয়া না করে অ্যাপাচি জাতীয় কিছু দিয়ে পরিবেশন করা উচিত
কোরি

1
আমরা এখানে কোন ধরণের পারফরম্যান্সের ত্রুটিগুলি সম্পর্কে কথা বলছি? ফাইলগুলি যদি জাঙ্গোর মাধ্যমে পরিবেশন করা হয় তবে ফাইলগুলি কি র‌্যামে বা কোনও ধরণের লোড হয়ে যায়? কেন জাঙ্গো এনজিনেক্সের মতো একই দক্ষতার সাথে পরিবেশন করতে সক্ষম নয়?
গেরশম

27

এস.লোটের "ভাল" / সহজ সমাধান রয়েছে এবং এলো 80ka এর "সেরা" / দক্ষ সমাধান রয়েছে। এখানে একটি "আরও ভাল" / মাঝারি সমাধান - কোনও সার্ভার সেটআপ নয়, তবে নিষ্পাপ ফিক্সের চেয়ে বড় ফাইলগুলির জন্য আরও দক্ষ:

http://djangosnippets.org/snippets/365/

মূলত, জ্যাঙ্গো এখনও ফাইলটি পরিবেশন করা পরিচালনা করে তবে পুরো জিনিসটি একবারে মেমোরিতে লোড করে না। এটি আপনার সার্ভারকে (ধীরে ধীরে) মেমরির ব্যবহার বাড়িয়ে না দিয়ে একটি বড় ফাইল পরিবেশন করতে দেয়।

আবার, এসলটের এক্স-সেন্ডফিল আরও বড় ফাইলগুলির জন্য আরও ভাল। তবে আপনি যদি তা করতে বা করতে চান না বা করতে চান না, তবে এই মাঝারি সমাধানটি ঝামেলা ছাড়াই আপনাকে আরও ভাল দক্ষতা অর্জন করবে।


4
সেই স্নিপেট ভাল না। এই স্নিপড django.core.servers.httpbaseঅনিবন্ধিত বেসরকারী মডিউলের উপর নির্ভর করে , যা "উত্পাদন ব্যবহারের জন্য ব্যবহার করবেন না !!! " এর শীর্ষে একটি বড় সতর্কতা চিহ্ন রয়েছে , যা ফাইলটি প্রথম তৈরি হওয়ার পরে থেকেই রয়েছে । যে কোনও ইভেন্টে, FileWrapperএই স্নিপেটটি নির্ভর করে এমন কার্যকারিতাটি জাঙ্গো ১.৯-এ সরানো হয়েছে।
ekkanal

16

@ রকেটমনকিগুলি সমাধানের চেষ্টা করা হয়েছে তবে ডাউনলোড করা ফাইলগুলি * .bin হিসাবে সংরক্ষণ করা হয়েছিল এবং এলোমেলো নাম দেওয়া হয়েছিল। এটা অবশ্যই ঠিক নেই। @ E8080ka থেকে অন্য লাইন যুক্ত করা সমস্যার সমাধান করেছে।
আমি এখন যে কোডটি ব্যবহার করছি তা এখানে:

from wsgiref.util import FileWrapper
from django.http import HttpResponse

filename = "/home/stackoverflow-addict/private-folder(not-porn)/image.jpg"
wrapper = FileWrapper(file(filename))
response = HttpResponse(wrapper, content_type='text/plain')
response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(filename)
response['Content-Length'] = os.path.getsize(filename)
return response

আপনি এখন একটি ব্যক্তিগত ডিরেক্টরিতে ফাইলগুলি সংরক্ষণ করতে পারেন (ভিতরে / মিডিয়া বা / পাবলিক_এইচটিএমএল নয়) এবং জ্যাঞ্জোর মাধ্যমে নির্দিষ্ট ব্যবহারকারীদের কাছে বা নির্দিষ্ট পরিস্থিতিতে তাদের প্রকাশ করতে পারেন।
আশা করি এটা সাহায্য করবে.

@ ইলো 80ka, @ এসলট এবং উত্তরগুলির জন্য @ রকেটমনকিগুলি ধন্যবাদ, তাদের সবগুলিকে একত্রিত করে নিখুঁত সমাধান পেয়েছেন =)


1
আপনাকে ধন্যবাদ, আমি ঠিক এটিই খুঁজছিলাম!
ইহাতেচে

1
ফাইলের নামের filename="%s"ফাঁকে ফাঁকে সমস্যা এড়াতে কনটেন্ট-ডিসপজিশন শিরোনামে ফাইলের নামের চারপাশে ডাবল-কোট যুক্ত করুন । তথ্যসূত্র: স্পেস সহ ফাইলের নামগুলি
খ্রিস্টান লং

1
আপনার সমাধানগুলি আমার পক্ষে কাজ করে। তবে আমার ফাইলটির জন্য আমার "অবৈধ স্টার্ট বাইট ..." ত্রুটি ছিল। এটির সাথে সমাধান করুনFileWrapper(open(path.abspath(file_name), 'rb'))
মার্ক মিশিন

FileWrapper
জাজানো

এটি ব্যবহার করা সম্ভবfrom wsgiref.util import FileWrapper
ক্রিসস

15

জাজানো ১.১০- তে কেবল ফাইলরেস্পোনস অবজেক্টের উল্লেখ করছি

সম্পাদনা করুন: জ্যাঙ্গোর মাধ্যমে ফাইলগুলি স্ট্রিম করার একটি সহজ উপায় সন্ধান করতে গিয়ে আমার নিজের উত্তরে গিয়েছিলাম, সুতরাং এখানে আরও একটি সম্পূর্ণ উদাহরণ (আমার কাছে ভবিষ্যতের জন্য) is এটি ধরে নেয় যে ফাইলফিল্ডের নামimported_file

views.py

from django.views.generic.detail import DetailView   
from django.http import FileResponse
class BaseFileDownloadView(DetailView):
  def get(self, request, *args, **kwargs):
    filename=self.kwargs.get('filename', None)
    if filename is None:
      raise ValueError("Found empty filename")
    some_file = self.model.objects.get(imported_file=filename)
    response = FileResponse(some_file.imported_file, content_type="text/csv")
    # https://docs.djangoproject.com/en/1.11/howto/outputting-csv/#streaming-large-csv-files
    response['Content-Disposition'] = 'attachment; filename="%s"'%filename
    return response

class SomeFileDownloadView(BaseFileDownloadView):
    model = SomeModel

urls.py

...
url(r'^somefile/(?P<filename>[-\w_\\-\\.]+)$', views.SomeFileDownloadView.as_view(), name='somefile-download'),
...

1
আপনাকে অনেক ধন্যবাদ! এটি বাইনারি ফাইলগুলি ডাউনলোড করার সহজ সমাধান এবং এটি কাজ করে।
জুলিয়া ঝাও

13

উপরে উল্লিখিত ছিল যে mod_xsendfile পদ্ধতিটি ফাইল-নামগুলিতে অ-ASCII অক্ষরগুলির জন্য অনুমতি দেয় না।

এই কারণে, আমার কাছে Mod_xsendfile এর জন্য একটি প্যাচ উপলব্ধ রয়েছে যা নাম url এনকোড হওয়া অবধি যে কোনও ফাইল প্রেরণের অনুমতি দেয় এবং অতিরিক্ত শিরোনাম:

X-SendFile-Encoding: url

পাশাপাশি প্রেরণ করা হয়।

http://ben.timby.com/?p=149


প্যাচটি এখন কোর লাইব্রেরিতে ফোল্ড করা আছে।
mlissner

7

চেষ্টা করুন: https://pypi.python.org/pypi/django-sendfile/

"একবার জাঙ্গো অনুমতি চেক করে নিলে ওয়েব-সার্ভারে ফাইল আপলোডগুলি (যেমন মোড_এক্সসেন্ডফাইলে অ্যাপাচি) অফলোড করার বিমূর্ততা" "


2
এই সময়ে (1 বছর পূর্বে) আমার ব্যক্তিগত কাঁটাচামচটিতে নন অ্যাপাচি ফাইল পরিবেশন করা ফ্যালব্যাক আসল মূল সংগ্রহস্থলটি এখনও অন্তর্ভুক্ত করা হয়নি।
রবার্তো রোজারিও

কেন আপনি লিঙ্কটি সরিয়েছেন?
কিওক 46

@ কিওক 46 গিথুব নীতিগুলির সাথে বিরোধ। ক্যানোনিকাল ঠিকানা নির্দেশ করতে সম্পাদিত।
রবার্তো রোজারিও

6

আপনার পছন্দমতো apacheবা nginx উত্পাদনে জনপ্রিয় সার্ভারগুলির দ্বারা প্রদত্ত সেন্ডফিল এপিআই ব্যবহার করা উচিত । বহু বছর ধরে আমি ফাইলগুলি সুরক্ষার জন্য এই সার্ভারগুলির সেন্ডফিল এপিআই ব্যবহার করছিলাম। তারপরে এই বিকাশ ও উত্পাদন উভয় উদ্দেশ্যেই উপযুক্ত উদ্দেশ্যে একটি সাধারণ মিডলওয়্যার ভিত্তিক জ্যাঙ্গো অ্যাপ্লিকেশন তৈরি করেছে You আপনি উত্স কোডটি এখানে অ্যাক্সেস করতে পারেন ।
আপডেট: নতুন সংস্করণে pythonসরবরাহকারী FileResponseজ্যাঙ্গো ব্যবহার করলে ব্যবহার হয় এবং লাইটথটিপি, ক্যাডি থেকে হিয়াওয়থা পর্যন্ত অনেকগুলি সার্ভার বাস্তবায়নের জন্য সমর্থন যোগ করে

ব্যবহার

pip install django-fileprovider
  • সেটিংসে fileproviderঅ্যাপ্লিকেশন যুক্ত করুন INSTALLED_APPS,
  • যোগ fileprovider.middleware.FileProviderMiddlewareকরার জন্য MIDDLEWARE_CLASSESসেটিংস
  • FILEPROVIDER_NAMEসেটিংস সেট আপ করুন nginxবা apacheউত্পাদন করুন, ডিফল্টরূপে এটি pythonউন্নয়নের উদ্দেশ্যে purpose

আপনার শ্রেণিবদ্ধ বা ফাংশন ভিউগুলিতে প্রতিক্রিয়ার শিরোনামের X-Fileমানটি ফাইলের নিখুঁত পথে সেট করে। উদাহরণ স্বরূপ,

def hello(request):  
   // code to check or protect the file from unauthorized access
   response = HttpResponse()  
   response['X-File'] = '/absolute/path/to/file'  
   return response  

django-fileprovider এমনভাবে প্ররোচিত করা হয়েছে যাতে আপনার কোডটিতে কেবল সর্বনিম্ন পরিবর্তনের প্রয়োজন হবে।

এনগিনেক্স কনফিগারেশন

সরাসরি অ্যাক্সেস থেকে ফাইল রক্ষা করতে আপনি কনফিগারেশনটি সেট করতে পারেন

 location /files/ {
  internal;
  root   /home/sideffect0/secret_files/;
 }

এখানে nginxকোনও অবস্থান url /files/কেবল ইন্টার্নি অ্যাক্সেস সেট করে , আপনি যদি উপরের কনফিগারেশন ব্যবহার করে থাকেন তবে আপনি এক্স-ফাইলটি সেট করতে পারেন,

response['X-File'] = '/files/filename.extension' 

এনজিএনএক্স কনফিগারেশন দিয়ে এটি করার মাধ্যমে ফাইলটি সুরক্ষিত হবে এবং আপনি জাজানো থেকে ফাইলটি নিয়ন্ত্রণ করতে পারবেন views


2

জ্যাঙ্গো সুপারিশ করছি যে আপনি অন্য সার্ভার ব্যবহার স্ট্যাটিক মিডিয়া সেবা করার জন্য (অন্য সার্ভারে একই মেশিনে চলমান জরিমানা।) তারা যেমন সার্ভারগুলির ব্যবহার সুপারিশ lighttp

এটি সেট আপ করা খুব সহজ। যাহোক. যদি 'somefile.txt' অনুরোধে উত্পন্ন হয় (বিষয়বস্তু গতিশীল) তবে আপনি জাজানো এটি পরিবেশন করতে চাইতে পারেন।

জ্যাঙ্গো ডক্স - স্ট্যাটিক ফাইল


2
def qrcodesave(request): 
    import urllib2;   
    url ="http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl=s&chld=H|0"; 
    opener = urllib2.urlopen(url);  
    content_type = "application/octet-stream"
    response = HttpResponse(opener.read(), content_type=content_type)
    response["Content-Disposition"]= "attachment; filename=aktel.png"
    return response 

0

আরেকটি প্রকল্প দেখার জন্য: http://readthedocs.org/docs/django-private-files/en/latest/usage.html প্রতিশ্রুতিবদ্ধ মনে হচ্ছে, এটি এখনও আমার পরীক্ষা করা হয়নি।

মূলত প্রকল্পটি Mod_xsendfile কনফিগারেশন বিমূর্ত করে এবং আপনাকে এই জাতীয় কাজগুলি করার অনুমতি দেয়:

from django.db import models
from django.contrib.auth.models import User
from private_files import PrivateFileField

def is_owner(request, instance):
    return (not request.user.is_anonymous()) and request.user.is_authenticated and
                   instance.owner.pk = request.user.pk

class FileSubmission(models.Model):
    description = models.CharField("description", max_length = 200)
        owner = models.ForeignKey(User)
    uploaded_file = PrivateFileField("file", upload_to = 'uploads', condition = is_owner)

1
অনুরোধ.user.is_authenticated একটি পদ্ধতি, কোনও বৈশিষ্ট্য নয়। (অনুরোধ.user.is_anonymous () নয়) অনুরোধ.user.is_authenticated () হিসাবে হুবহু হ'ল কারণ is_authenticated is_anonymous এর বিপরীত।
বিস্ফোরিত

@ এক্সপ্লোডগুলি সবচেয়ে খারাপ, কোডটি ডক্স থেকে ঠিক django-private-files...
আরমান্ডো পেরেজ মারকোস

0

আমি একই সময়ে আরও একবার একই সমস্যার মুখোমুখি হয়েছি এবং xsendfile মডিউল এবং অথিউ ভিউ সজ্জাকারীদের জ্যাঙ্গো-ফাইললিবারি ব্যবহার করে প্রয়োগ করেছি । এটি আপনার নিজের সমাধানের জন্য অনুপ্রেরণা হিসাবে নির্দ্বিধায় ব্যবহার করুন।

https://github.com/danielsokolowski/django-filelibrary



0

আমি এই নিয়ে একটি প্রকল্প করেছি। আপনি আমার গিথুব রেপো দেখতে পারেন:

https://github.com/nishant-boro/django-rest-framework-download-expert

এই মডিউলটি অ্যাপাচি মডিউল Xsendfile ব্যবহার করে জ্যাঙ্গো রেস্ট ফ্রেমওয়ার্কে ডাউনলোডের জন্য ফাইলগুলি সরবরাহ করার একটি সহজ উপায় সরবরাহ করে। এটিতে কেবলমাত্র কোনও নির্দিষ্ট গোষ্ঠীর সাথে সম্পর্কিত ব্যবহারকারীদের জন্য ডাউনলোড পরিবেশন করার অতিরিক্ত বৈশিষ্ট্য রয়েছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.