Django Rest框架的FilePond服务器应用程序

django-drf-filepond的Python项目详细描述


django drf filepond:django+django rest框架的filepond服务器实现

pypi versionBuildStatus-drf-filepond.readthedocs.io/?最新的" rel="nofollow">documentation statushttps://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授权下由英国研究与创新(工程与精神科学研究委员会)支持的工作的一部分。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?