Django Rest框架的FilePond服务器应用程序
django-drf-filepond的Python项目详细描述
django drf filepond:django+django rest框架的filepond服务器实现
-drf-filepond.readthedocs.io/?最新的" rel="nofollow">https://django-drf filepond.readthedocs.io
安装
应用程序可以从pypi安装:
pip install django-drf-filepond
或者将其添加到您的依赖项列表中的arequirements.txt文件。
配置
在django应用程序中有三个关键配置更新可用于设置django drf文件池:
<H6>1。将应用程序添加到已安装的应用程序:将"django drf filepond"添加到django设置文件(例如settings.py
)中已安装的应用程序中:
...INSTALLED_APPS=[...,'django_drf_filepond']...<H6>2。设置临时文件上载位置:
通过在设置文件中添加django-drf-filepond-upload-tmp配置变量,设置希望django-drf-filepond存储临时文件上载的位置,例如:
importos...DJANGO_DRF_FILEPOND_UPLOAD_TMP=os.path.join(BASE_DIR,'filepond-temp-uploads')...<H6>3。将应用程序URL包含到主URL配置中
将django drf filepond的url映射添加到urls.py中的url配置:
fromdjango.conf.urlsimporturl,includeurlpatterns=[...url(r'^fp/',include('django_drf_filepond.urls')),]
在客户端,需要设置进程
、还原
、获取
、加载
和还原
函数的终结点,以匹配上面path语句中使用的终结点。例如,如果url的第一个参数是
fp/
,则流程函数的端点将是/fp/process/
(可选)4.设置永久文件存储位置
如果您希望让django drf filepond管理文件上传的永久存储(请注意,如果您希望使用load
方法,这是必需的),则需要在应用程序设置文件中设置django drf_filepond_file_store_path
,例如
...DJANGO_DRF_FILEPOND_FILE_STORE_PATH=os.path.join(BASE_DIR,'stored_uploads')...
有关如何将临时上载移动到django drf filepond的详细信息,请参见下面的"使用文件上载"。
处理文件上载
从FilePond客户端上载文件时,该文件将被放置在由django_drf_filePond_upload_tmp
参数指定的临时上载目录中唯一命名的目录中。根据filepond服务器规范,服务器返回文件上载的唯一标识符。在第在这种情况下,标识符是使用shortuuid库生成的22个字符的唯一id。此id是在django_drf_filepond_upload_tmp
下创建的目录的名称,该目录中放置了文件。目前,该文件还有一个单独的唯一标识符,用于在服务器文件系统上隐藏文件的原始名称。原始文件名存储在django drf filepond应用程序的数据库中。
当/如果客户端随后提交与触发上载的FilePond实例关联的表单时,将传递唯一的目录ID,此ID可用于查找临时文件。
在通过django drf filepond从filepond客户端上载后,有两种不同的方法来处理需要永久存储在服务器上的文件。这两种方法并不相互排斥,如果您愿意,可以选择对某些文件使用一种方法,对其他文件使用另一种方法。
<H6>1。手动处理文件存储使用这种方法,您可以将最初作为临时上载存储的文件由django drf filepond移动到您选择的存储位置,然后文件就独立于django drf filepond。下面的示例演示如何根据临时上载的唯一上载ID查找临时上载并将其移动到永久存储位置。然后删除临时上载记录,并且django drf filepond不再知道该文件:
importosfromdjango_drf_filepond.modelsimportTemporaryUpload# Get the temporary upload recordtu=TemporaryUpload.objects.get(upload_id='<22-char unique ID>')# Move the file somewhere for permanent storage# The file will be saved with its original nameos.rename(tu.get_file_path(),'/path/to/permanent/location/%s'%tu.upload_name)# Delete the temporary upload record and the temporary directorytu.delete()<H6>2。使用django drf filepond的api将临时上载存储到永久存储
注意:您必须使用此方法存储任何文件,这些文件是您随后想要使用filepond的加载
函数访问的。
使用此方法,文件存储到django drf filepond文件存储目录下的一个位置,该目录由django drf\u filepond\u store\u path
设置设置设置。
fromdjango_drf_filepond.apiimportstore_upload# Given a variable upload_id containing a 22-character unique file upload ID:su=store_upload(upload_id,destination_file_path='target_dir/filename.ext')# destination_file_path is a relative path (including target filename. # The path will created under the file store directory and the original # temporary upload will be deleted.
传递给store_upload的
destination_path
参数应与django_drf_filepond_file_store_path
定义的基本上载位置相关。如果您传递的路径以/
开头,则前导的/
将被删除,并且该路径将被解释为相对于django_drf_filepond_file_store_path
。您提供的路径应包括您希望将文件存储为的文件名。
许可证
此存储库是根据BSD 3条款许可证授权的。请参阅存储库根目录中的许可证文件。
致谢
感谢pqina生成此django应用程序提供服务器端支持的文件上载库。
Django DRF FilePond应用程序是在EP/R025460/1授权下由英国研究与创新(工程与精神科学研究委员会)支持的工作的一部分。