带有上传附件选项的文本区域 HTML/JQuery

Text area with upload attachments options HTML/JQuery

我创建了允许用户输入文本的文本区域,如下所示:

<!DOCTYPE html>
<html>
<body>

<textarea rows="4" cols="50">
Please type your favourite foods here and upload attachments if you want!</textarea>

</body>
</html>

我想允许用户允许 drag/drop 或将文件附件上传到文本区域,但我不太确定如何实现。我对网络开发还很陌生,我不确定这样的功能会被称为什么。我已经创建了我想要的屏幕截图,见下文 - 与 gmail compose window 类似的内容。请问谁能帮帮我,谢谢。

一旦用户编写并上传了文件,我会将它们保存到数据库中。

我建议使用 DropzoneJS 库。

使用 options you need and use the sending 事件创建 Dropzone 对象以将文本区域文本添加到 POST 请求。

default template and add your HTML inside div with template-container id. Then add previewTemplate 属性 更改为 myDropzone 选项 价值

document.querySelector('#template-container').innerHTML

Dropzone.autoDiscover = false;
$(document).ready(function() {
  Dropzone.options.myDropzone = {
    url: $('#my-dropzone').attr('action'),
    paramName: "file",
    maxFiles: 5,
    maxFilesize: 20,
    uploadMultiple: true,
    thumbnailHeight: 30,
    thumbnailWidth: 30,
    init: function() {
      this.on('sending', function(file, xhr, formData) {
          formData.append('favouriteFoodText', document.getElementById('favourite-food-text').value);
        }),
        this.on("success", function(file, response) {
          console.log(response);
        })
    }
  }

  $('#my-dropzone').dropzone();
});
#b-dropzone-wrapper {
border: 1px solid black;
}

#b-dropzone-wrapper .full-width {
  width: 100%
}

#b-dropzone-wrapper textarea {
  resize: none;
  border: none;
  width: 99%;
}

#my-dropzone {
  top: -5px;
  position: relative;
  border: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/min/dropzone.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.5.0/min/dropzone.min.css" rel="stylesheet" />
<div id="b-dropzone-wrapper">
  <textarea rows=5 id="favourite-food-text" placeholder="please write some text here"></textarea>
  <form action="file-upload.php" id="my-dropzone" class="dropzone full-widht" method="post" enctype="multipart/form-data"></form>
  <input type="submit" value="Submit your entry" class="full-width" />
</div>

在服务器端提交表单后,传输的数据将被PHP解析并保存在$_POST$_FILES超级全局数组中。