JamesBolitho/silverstripe-frontenduploadfield

为 SilverStripe 4 开发的支持 Dropzone.js 的前端上传字段

安装次数 5,888

依赖: 0

建议者: 0

安全: 0

星标: 6

关注者: 3

分支: 7

开放问题: 0

类型:silverstripe-vendormodule

dev-master 2023-12-18 11:53 UTC

This package is auto-updated.

Last update: 2024-09-18 13:19:56 UTC


README

为 SilverStripe 4 开发的支持 Dropzone.js 的前端上传字段。jQuery 也需要在您的前端模板中包含。

安装

composer require jamesbolitho/silverstripe-frontenduploadfield

run /dev/build

字段配置

要使用此字段,请按以下操作:

use jamesbolitho\frontenduploadfield\UploadField;

在您的表单中按常规创建字段

$upload1 = UploadField::create('Images', 'Images');

设置上传文件夹

$upload1->setFolderName("Uploads/my-upload-folder/");

设置允许的文件类型

$upload1->getValidator()->setAllowedExtensions(array('jpg','jpeg','gif'));

设置允许的最大文件大小

$sizeMB = 1; // 1 MB
$size = $sizeMB * 1024 * 1024; // 1 MB in bytes
$upload1->getValidator()->setAllowedMaxFileSize($size);

设置为允许从上传字段中删除文件

$upload1->setRemoveFiles(true);

请注意,这将同时从资源中删除文件。

为了使此删除文件功能工作,将为通过前端上传字段上传的每个文件生成并保存一个键到数据库中。这是为了从前端表单中更安全地识别您的文件。在上传后删除此键,您可以在表单提交处理函数中添加以下内容,例如:

foreach($data["Images"]["Files"] as $id) {
	if($file = File::get()->byID((int) $id)) {
		$file->removeFrontEndUploadKey();
	}
}

设置为允许多文件上传

$upload1->setIsMultiUpload(true);

设置允许上传的文件数量

$upload1->setAllowedMaxFileNumber(5);

设置 XHR 请求的超时时间(毫秒)

$upload1->setTimeout(30000);

待办事项

  • 添加通过 Silverstripe 以编程方式修改更多 Dropzone 设置的能力
  • 添加分块上传。
  • 添加更多非图像文件的图标,例如 pdf、word 等。