将dropzone上传的文件名传递给隐藏的输入字段

时间:2018-04-21 04:20:33

标签: php jquery dropzone

我在一个页面中有2个表单,第一个:dropzone,第二个是:用户需要填写的表单。我想在用户在dropzone上传文件时,它会以第二种形式添加隐藏输入。这是我的表格

<form action="/users/upload.php" class="dropzone needsclick dz-clickable" id="poster"></form>
 <form action='' method='post' name='create' enctype="multipart/form-data">
<div id="ideaform"></div>
</form>

这是我的upload.php

    <?php
if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];       
    $name = $_FILES['file']['name']; 
    $x = explode('.', $name);
    $ext = strtolower(end($x));
    $name = md5(time().$name).'.'.$ext;
    move_uploaded_file($tempFile, 'images/uploaded/'.$name);
}
?>

我在互联网上探讨了这个方法获取文件名并将其置于隐藏输入的值上并找到了这个jQuery,每当我尝试上传文件时,隐藏输入的值总是&#34; undefined&#34;

 Dropzone.options.poster = {
                maxFiles:1,
                acceptedFiles: "image/*",
                init: function() {
                      this.on("maxfilesexceeded", function(file) {
                            this.removeAllFiles();
                            this.addFile(file);
                      });
                    this.on('success', function(file, response) {
                    $("#ideaform").append($('<input type="hidden" ' + 'name="files" ' + 'value="' + response.fileName + '">'));
                    });
                }
            };

我哪里错了? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是使用JSON。以下是代码:

Dropzone.options.poster = {
                acceptedFiles: "image/*",
                maxFilesize: 5, // MB
                maxFiles: 1,
                init: function() {
                      this.on("maxfilesexceeded", function(file) {
                            this.removeAllFiles();
                            this.addFile(file);
                      });

                    this.on('success', function(file, response) {
                    JSON.parse(response);
                    console.log(response);
                    $("#ideaform").append($('<input type="hidden" name="file"  value='+response+'>'));
                    });
                }
            };

对于表单操作我得到了这个

    <?php
if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];       
    $name = $_FILES['file']['name']; 
    $x = explode('.', $name);
    $ext = strtolower(end($x));
    $name = md5(time().$name).'.'.$ext;
    move_uploaded_file($tempFile, 'images/uploaded/'.$name);
    $ar = $name;
    echo json_encode($ar);
}
?>