【问题标题】:symfony2 and dropzone.js save issuessymfony2 和 dropzone.js 保存问题
【发布时间】:2013-12-02 12:43:34
【问题描述】:

我有一个上传文件的应用程序。 我正在使用脚本 Dropzone.js 并且我在这里遵循了一个答案以使其与 symfony 一起使用。

控制器:

    public function indexAction() {
        return $this->render('testDropzoneBundle:Default:index.html.twig');
    }

    public function uploadAction() {
        $request = $this->get('request');
        $files = $request->files;

        foreach ($files as $uploadedFile) {
            $name = uniqid();
            $em = $this->getDoctrine()->getManager();
            $f = new File();
            $f->setName(($uploadedFile->getClientOriginalName());
            $f->setFile($uploadedFile);
            $f->preUpload();
            $f->upload();
            $em->persist($f);
            $em->flush();
        }
        return new Response($name);
    }

和视图:

<form action="{{ path('upload') }}" method="post" class="dropzone">
<div class="fallback" id="mydropzone">
    <input name="file" type="file" multiple />
</div>

但现在我想为我在页面上拖动的每个文件设置一个名称。 我想显示一个询问名称的对话框。 像这样: dropzone.js 第 538 行

var myName = prompt('Enter the name for file '+file.name);
file.name = myName;

但是如何将名称从脚本发送到控制器?

【问题讨论】:

  • file.name = myName; 这里的文件是什么实例?拖放区?
  • 是的。但问题是file.name 永远不会假定为myName。我应该在哪里询问名称并替换?
  • 所以基本上你想让你的用户将文件拖到浏览器中,然后在一个提示对话框中她输入她想要的文件名,然后点击确定文件被上传并保存用户选择的名称。
  • 完全正确。我几乎准备好了一切,我可以上传文件,我可以从脚本中保存文件。但我不能更改文件名

标签: javascript php symfony


【解决方案1】:

您需要将名称发送到 php 脚本。你有 2 个options:

  1. Dropzone 将提交您在 dropzone 表单中的所有隐藏字段
  2. 上传时将文件名附加到表单数据中
  3. 您也可以使用params 选项

如果你使用第一个,在上传之前,提示用户输入文件名,一旦你得到文件名,就会在表单中附加一个隐藏的输入,像这样(尚未测试):

var name = prompt('Name the file');

$('#myDropzoneForm').append('<input type="hidden" name="clientFilename" value="' + name + '"');

选项 2:

var myDropzone = new Dropzone('div#myId', { url: "/file/post" });

myDropzone.on('sending', function(file, xhr, formData) {
    var name = prompt('Name the file');
    formData.append('clientFilename', name);
});

【讨论】:

  • 当我尝试这个时: var myDropzone = new Dropzone('dropzone', {url: "/file/post"});我收到错误“无效的 dropzone 元素。”
  • 你少了一个点:.dropzone
  • 当我使用这个时: var myDropzone = new Dropzone('#mydropzone', {url: "/file/post"});什么也没发生,文件像以前一样上传,但不要问我名字。检查我的编辑
  • 您使用的是哪个版本的 dropzone?
  • 也许可以使用这个:Dropzone.autoDiscover = false; $(function() { var myDropzone = new Dropzone("#mydropzone", {u​​rl: "/test/web/app_dev.php/dropzone/upload"}); myDropzone.on(" addedfile", function(file) { var name = prompt('命名文件'); formData.append('clientFilename', name); }); });
猜你喜欢
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2013-04-12
相关资源
最近更新 更多