php - dropzone.js 不将文件移动到上传文件夹

标签 php jquery upload dropzone.js

我使用 dropzone.js、upload 插件和 PHP。我正在尝试使用 dropzone show success Icon 和打印图像预览,但它没有将我的图像上传到上传目录。我该如何解决这个问题?

HTML:

<div class="dropzone dropzone-previews" id="my-awesome-dropzone">
  <form action="<?PHP echo SITE.'/controller/'?>upload.php"></form>
  <div class="fallback">
    <input name="file" type="file" multiple />
  </div>
</div>

JS:

<script>
    $(document).ready(function(){
    Dropzone.options.myAwesomeDropzone = { // The camelized version of the ID of the form element
    // The configuration we've talked about above
    url: '<?PHP echo SITE.'/controller/'?>upload.php',
    previewsContainer: ".dropzone-previews",
    uploadMultiple: true,
    parallelUploads: 100,
    maxFiles: 100
  }

 });
</script>

PHP:

<?php
$ds          = DIRECTORY_SEPARATOR;  //1

$storeFolder = '../../uploads/news/';   //2

if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];          //3             

    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  //4

    $targetFile =  $targetPath. $_FILES['file']['name'];  //5

    move_uploaded_file($tempFile,$targetFile); //6

}
?> 

最佳答案

解决这个问题需要两件不同的事情。

在我看来你正在使用 http://www.startutorial.com/articles/view/how-to-build-a-file-upload-form-using-dropzonejs-and-php开始使用 dropzone。根据您的操作系统,您将需要更改您的文件权限,即使该页面上的评论线程说它在本地工作。这并非适用于所有 AMP 堆栈,甚至在不同的堆栈版本/分发版中也是如此。

首先

确保上传路径的权限设置正确。某些文件夹(例如 tmp psuedo 文件夹,没有这个问题,但用户创建的端点可能有。如果您使用特定的操作系统/堆栈名称更新您的问题,我将更新此答案这样做所需的具体步骤。

第二

enctype= multipart/form-data 属性添加到您的表单标签。

非常重要

关于Marc B提出的话题,我想指出本教程只是一个起点,不应在没有某种验证和安全性的情况下上传到任何可公开访问的环境。基本的安全性是这样的,只允许上传某些扩展(可以在服务器端完成,也可以在 dropzone.js 初始化中配置),并添加一个 CSRF token。 .下面是一些推荐的 dropzone 选项配置设置,至少可以加强客户端的验证:

var unique = "some-unique-string";
var acceptedFileTypes = "image/*"; //dropzone requires this param be a comma separated list

Dropzone.options.myAwesomeDropzone = { 

  // your other settings as listed above
  maxFiles: 10, // allowing any more than this will stress a basic php/mysql stack
  paramName: unique,
  headers: {"MyAppname-Service-Type": "Dropzone"},
  acceptedFiles: acceptedFileTypes

}

以及基于以上的一些PHP注意事项:

  • 您需要添加一项检查以确保自定义 header 在请求中(这只是一个更简单的安全步骤
  • 使用 php 添加检查以确保文件具有可接受的类型(无论服务器端验证如何,您始终应该这样做)
  • 我建议您在使用 php 验证之前将所有文件名转换为小写
  • 编辑:您还需要确保更改您的 php $_FILES['file'] 以匹配由 dropzone 配置的唯一字符串paramName 选项.. &_Files['some-unique-string']

关于php - dropzone.js 不将文件移动到上传文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475170/

相关文章:

javascript - jQuery 在每个前缀添加完所有 H3 后查找 H3 的高度

javascript - Laravel - Jquery,Ajax - 将可空数据作为数组插入数据库中

PHP:对嵌套集中的数据进行排序

php - 无法从 mysql 表中选择用户。

java - 如何在数据表条目中添加路径

javascript - 如何从表单中删除上传项目?

iphone - 从 iPhone 应用程序上传图像

php - 如何使用单个 php 代码将单独的图像存储在单独的字段中

javascript - 如何在适用于 Android 平台的 PhoneGap 应用程序中接收即时通知,告知您收件箱中有来自管理员的新消息

php - MySQL数据库查询-速度