hummingbird-dev/webdav-fileselector

该包最新版本(v2.0.2)没有可用的许可证信息。

从WebDAV服务器检索目录结构,以选择一个或多个文件和文件夹。

v2.0.2 2019-03-19 19:45 UTC

This package is auto-updated.

Last update: 2024-09-20 08:02:08 UTC


README

一个用于显示和选择WebDAV服务器文件和文件夹的Laravel包。

特性

  • 从WebDAV服务器检索文件和文件夹列表
  • 使用WebDAV API: propfind
  • 无需挂载
  • 快速
  • 支持多用户
  • 支持作为API的外部使用
  • 使用hummingbird-treeview包提供复杂的客户端模板
  • 以层次树结构显示文件和文件夹
  • 可以启用/禁用不同的选项,例如。
    • 只选择一个文件
    • 选择一个或多个文件
    • 选择整个文件夹
    • 全选
  • 根据文件类型(例如 .jpg, .txt)和任意模式进行筛选
  • 方便的搜索功能
  • ...以及更多

依赖项

  • Laravel 5.5.*
  • PHP 7.0
  • cURL扩展已启用

包含的库

  • jQuery 3.3.1
  • bootstrap 4.0.0
  • font-awesome
  • hummingbird-dev/hummingbird-treeview

这意味着这些库(或其部分)包含在webdav-fileselector包中。因此不需要下载/安装这些库。

入门

安装

通过composer安装,并在您项目的根目录中运行以下命令

composer require hummingbird-dev/webdav-fileselector

将以下内容添加到您的composer.json中(位于您的项目根目录)

...
"autoload": {
   ...
   "psr-4": {
      "App\\": "app/",
      "HummingbirdDev\\WebdavFileselector\\":"vendor/hummingbird-dev/webdav-fileselector/src/"
   }
   ...
},

从您的项目根目录更新composer

composer update

从您的根文件夹发布资源

php artisan vendor:publish --provider="HummingbirdDev\\WebdavFileselector\\WebdavFileselectorServiceProvider"

使用

启动本地开发服务器

php artisan serve

并导航到https://:8000/webdav-fileselector-get

您将看到客户端模板,它可以在"/resources/views/hummingbird-dev/webdav-fileselector.blade.php"中编辑。

有两种方法可以包含所需的WebDAV凭证和提交可选设置。

首先,可以在"/resources/views/hummingbird-dev/webdav-fileselector.blade.php"中编辑客户端或在任何其他页面上使用额外的POST表单来调用客户端。此表单可能如下所示

<form method="POST" action="https://:8000/webdav-fileselector-get">
	<input type="hidden" name="b2drop_username" value="smieruch">
	<input type="hidden" name="b2drop_password" value="password">
	<input type="hidden" name="b2drop_url" value="https://:8099/remote.php/webdav/">
	<input type="hidden" name="select_only_one_item" value="1">
	<input type="hidden" name="show_only_parent_folder" value="0">
	<input type="hidden" name="disable_folder_checking" value="1">
	<input type="hidden" name="disable_root_node" value="0">
	<input type="hidden" name="getChecked_onlyEndNodes" value="1">
	<input type="hidden" name="filter" value="">
	<input type="hidden" name="fileselector_height" value="300">
	<input type="hidden" name="minimal_view" value="0">
	<input type="hidden" name="jumbotron" value="1">
	<button type="submit">Start Fileselector</button>
</form>

webdav-fileselector作为服务

有趣的一点是,这个HTML表单可以实现在任何其他网页上。因此,可以在其他Web项目中提供此服务。一种集成方法是将iframe放置在页面上

<iframe name="my_iframe" width="100%" height="400px" src=""></iframe>

并将表单指向iframe,使用"target"属性,这意味着在iframe中打开表单POST的响应

<form method="POST" action="https://:8000/webdav-fileselector-get" target="my_iframe">
	<input type="hidden" name="b2drop_username" value="smieruch">
	<input type="hidden" name="b2drop_password" value="password">
	...

参数

以下参数是必需的

  • b2drop_username
    这是登录WebDAV服务器所需的用户名。

  • b2drop_password
    登录WebDAV服务器所需的相应密码。

  • b2drop_url
    WebDAV服务器的URL。如果它是一个ownCloudnextCloud实例,则URL为https://example.com/remote.php/webdav

以下设置是可选的,并且所有默认值。这些设置主要影响用于显示文件和文件夹的hummingbird-treeview的功能。所有这些设置的都是字符串,尽管许多行为类似于布尔值truefalse

  • 选择单个项
    此参数可以通过将value="1"启用或通过将value="0"禁用来禁用。默认值为value="1"。如果激活,则只能检查树视图中的单个项。这提供了一个典型功能,即用户只能选择单个文件而不是多个。需要注意的是,参数禁用文件夹检查也应启用。

  • 禁用文件夹检查
    要禁用检查整个文件夹的功能,必须将此参数设置为value="1",否则必须使用value="0"。默认值为value="1"。激活此参数是必要的,如果上述参数选择单个项也激活了,则可以限制选择项为单个文件。

  • 仅显示父文件夹
    这是一个特殊参数,可以通过将value="1"来激活或通过将value="0"来禁用。默认值为value="0"。如果激活,则返回的列表(下面详细介绍)不包含选定的文件,而是只包含包含选定文件的文件夹,即父文件夹。

  • 禁用根节点
    同样,此设置可以通过value="1"来激活,并通过value="0"来停用。默认值为value="0"。如果激活,则根节点被禁用,这意味着它不能被检查。

  • 仅获取选中的末节点
    这是一个重要的参数,通过value="1"激活,并通过value="0"停用。默认值为value="1"。如果激活,则返回的列表(下面详细介绍)只包含选中的文件,而不是选中的文件夹。

  • 过滤器
    过滤是一个强大的选项,用于仅选择某些文件。例如,如果value=".txt",则只显示名称中包含".txt"的文件。默认值为空字符串value="",表示没有过滤。如果value="myfile",则只显示名称中包含"myfile"的文件。此外,还可以在"OR"意义上过滤多个字符串。如果value=".jpg|.png|.bmp",则只显示包含".jpg"、"".png"或".bmp"的文件。

  • fileselector_height 此参数定义了包含hummingbird-treeview<div>的高度(以像素为单位)。它是可滚动的,因此如果需要,可以选择较小的尺寸。默认值为value="400"像素。

  • minimal_view 如果通过value="1"激活(通过value="0"停用),则只显示标题、搜索字段和树视图。否则,包括更多标记。默认值为value="0"

  • jumbotron 如果通过value="1"激活(通过value="0"停用),则将树视图放置在Bootstrap Jumbotron上,即基本上是一个灰色块。

事件 -- 获取选定的文件

hummingbird-treeview上对每个文件的检查或取消检查都会触发一个事件,该事件包括选定的文件。如webdav-fileselector.blade.php文件所示,在文件末尾有一个小的JavaScript代码片段

 window.addEventListener("message",function(e) {
     //console.log("message event",e);
     var key = e.message ? "message" : "data";
     data = e[key];
     console.log("file_path= " + data.dataid)
     console.log("file_id= " + data.id)
     console.log("file_text= " + data.text)
 },false);

此JavaScript代码获取选定的文件列表,这些文件存储在此对象data中。该对象包含数组,其中data.dataid包含选定文件的完整路径。data.id包含一个id,它基本上是一个字符串和运行数字的组合,此处不重要。data.text包含在treeview中显示的文本,它通常与实际文件名相似。