emrdev/symfony-dropzone

此包已被废弃,不再维护。作者建议使用 emrdev/symfony-dropzone 包。

Symfony 表单类型

此包尚未发布版本,且信息有限。


README

扩展 SymfonyForm 组件。添加新的表单类型 DropzoneType

安装

composer require emrdev/symfony-dropzone

资源

将 dropzone 库添加到项目的模板中

<script src="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone-min.js"></script>
<link href="https://unpkg.com/dropzone@6.0.0-beta.1/dist/dropzone.css" rel="stylesheet" type="text/css" />

用法

public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options)
{ 

    // userFiles is OneToMany
    $builder->add('userFiles', DropzoneType::class, [
        'class' => File::class,
        'maxFiles' => 6,
        'uploadHandler'=>'uploadHandler',  // route name
        'removeHandler'=> 'removeHandler'// route name
   ]);
}

示例:路由 uploadHandler/removeHandler

/**
     * @Route("/uploadhandler", name="uploadHandler")
     */
    public function uploadhandler(Request $request, ImageUploader $uploader) { 
        $doc = $uploader->upload($request->files->get('file'));  
        $file = new File(); 
        $file->setSrc($doc['src']);
        ...

        $this->getDoctrine()->getManager()->persist($file);
        $this->getDoctrine()->getManager()->flush();
        return new JsonResponse($file);
    }


    /**
     * @Route("/removeHandler/{id}", name="removeHandler")
     */
    public function removeHandler(Request $request,File $file = null) {
        $this->getDoctrine()->getManager()->remove($file);
        $this->getDoctrine()->getManager()->flush();
        return new JsonResponse(true);
    }

选项

名称 默认值 描述
class null 文件实体
choice_src "src" 包含 src 的属性
uploadHandler null 上传的 Symfony 路由名称
removeHandler null 删除的 Symfony 路由名称
multiple true 如果你有一个一对一的关系,则设置为 false
maxFiles 1 如果不为 null,则定义此 Dropzone 处理的文件数量。
addRemoveLinks true 如果为 true,则在每个文件预览中添加一个删除或取消(如果正在上传)文件的链接。
headers [] 一个可选对象,用于向服务器发送额外的标头。Headers 是数组。例如:['Authorization' => 'Bearer XXXXXX']
formData [] 将发送到 FormData 的额外数据。例如:['key' => 'value']
uploadHandlerMethod "POST" 如果需要,可以更改为 "PUT"。
removeHandlerMethod "DELETE" 如果需要,可以更改为 "POST"。
withCredentials 0 将在 XHRequest 上设置。
thumbnailWidth 120 如果为 null,则使用图像的比例来计算它。
thumbnailHeight 120 与 thumbnailWidth 相同。如果两者都为 null,则不会调整图像大小。
thumbnailMethod "crop" 如果提供了 thumbnailWidth 和 thumbnailHeight,则图像应该如何缩小。可以是 contain 或 crop。
resizeWidth null 如果设置,则在上传之前将图像调整到这些尺寸。如果只提供了一个,则保留文件的原始宽高比。
resizeHeight null 参见 resizeWidth。
resizeMimeType null 调整图像上传到服务器之前的 MIME 类型。如果为 null,则使用原始 MIME 类型。例如,要强制使用 jpeg,请使用 image/jpeg。参见 resizeWidth 以获取更多信息。
resizeMethod "contain" 如果提供了 resizeWidth 和 resizeHeight,则图像应该如何缩小。可以是 contain 或 crop。
filesizeBase 1024 -
ignoreHiddenFiles true 是否应忽略目录中的隐藏文件。
acceptedFiles null 例如:image/*,application/pdf,.psd
autoProcessQueue true 如果为 false,则文件将添加到队列中,但队列不会自动处理。这可能在需要一些额外的用户输入才能发送文件(或希望一次发送所有文件)时很有用。如果你准备好了发送文件,只需调用 myDropzone.processQueue() 即可。
autoQueue true 如果为 false,则添加到 dropzone 的文件默认不会排队。您需要手动调用 enqueueFile(file)。
previewsContainer null 定义文件预览的显示位置 - 如果为空,则使用Dropzone元素本身。可以是CSS选择器。

MIT许可