移动用Dropzone.js和PHP上传的照片



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

根据本教程,我让系统能够将可接受的文件类型上传到根目录中的"Uploads"文件夹,但我一直在纠结如何将照片上传到每个用户的唯一目录。

当用户到达我的照片上传页面时,他们已经在我的服务器上创建了一个具有唯一名称的文件夹,其路径已存储在$_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值超出范围——但很高兴这个问题得到了解决。

您可以将requestedDirectory作为查询字符串与表单的action属性一起传递。这样就可以访问它。

相关内容

  • 没有找到相关文章

最新更新