【问题标题】:Moving a photo uploaded with Dropzone.js and PHP移动使用 Dropzone.js 和 PHP 上传的照片
【发布时间】:2014-06-02 10:43:20
【问题描述】:

我正在尝试使用dropzone.js 添加一个简单的拖放界面,以便用户将最多 10 张照片上传到我的服务器(当前为 WAMP)。我在后端使用 PHP 5.4。

this tutorial 之后,我让系统运行得足够好,可以将可接受的文件类型上传到我根目录中的“上传”文件夹,但我不知道如何将照片上传到每个用户的唯一目录。

当用户访问我的照片上传页面时,他们已经在我的服务器上创建了一个具有唯一名称的文件夹,其路径已存储在 $_SESSION['requestedDirectory'] 中。

这是用于显示 Dropzone 表单的代码:

<form action="<?php echo BASE_URL; ?>photo_uploads.php" class="dropzone" id="photoUploadDropzone"></form>

<script type="text/javascript">
    Dropzone.options.photoUploadDropzone = {
      paramName: "file",
      maxFilesize: 5, // MB
      maxFiles: 10,
      addRemoveLinks: true,
      acceptedFiles: "image/jpeg, image/jpg, image/png, image/gif",
      accept: function(file, done) {
        done();
      }
    };
</script>

如您所见,它将数据发送到名为 photo_uploads.php 的文件中,该文件具有以下代码:

if (!empty($_FILES)) {
  $tempFile = $_FILES['file']['tmp_name'];
  $targetPath = $_SESSION['requestedDirectory']; <--HERE'S THE PROBLEM LINE
  $targetFile =  $targetPath. $_FILES['file']['name'];
  move_uploaded_file($tempFile,$targetFile);
}

正如上面评论中提到的,这个文件似乎无法从会话变量中取出数据,但我不知道为什么。如果我更改该行以提供完整目录(例如 $targetPath = 'C://wamp/www/shops/foldername';)它可以正常工作,但是当然我不能根据哪个用户动态更改该文件夹名称正在使用表单。

所以澄清一下,我想知道如何将文件上传到存储在Session中的路径?

更新:已解决。

对于以后遇到同样问题的其他人,这就是我将表单更改为:

<form action="<?php echo BASE_URL; ?>photo_uploads.php?folder=<?php echo $_SESSION['photosDir']; ?>" class="dropzone" id="photoUploadDropzone"></form>

就像 Rizwan 建议的那样,通过在 GET 变量中传递 $_SESSION['photosDir'] 值,它可以在表单发布后访问。

我所做的另一项更改是对 photo_uploads.php 的更改,仅更改为以下行:

$targetPath = $_GET['folder'];

完全不知道为什么一开始不能直接从 Session 获得该值 - 我从未听说过 Session 值超出范围 - 但很高兴解决了这个问题。

【问题讨论】:

    标签: javascript php file upload dropzone.js


    【解决方案1】:

    您可以将requestedDirectory 作为带有表单动作属性的查询字符串传递。这样就可以访问了。

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2018-06-03
      • 2011-06-04
      • 2017-02-18
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多