如何使用 PHP 连接从 Dropzone.js 上传的分块文件?

我正在使用 Dropzone.js 获取各种类型的文件(包括图像和非图像,如 PDF),并将它们以 1mb 块的形式上传到我们的服务器。然后我尝试用 PHP 连接文件,然后将它们上传到我们公司的 FileMaker 数据库。


到目前为止,我已经能够像他们应该的那样将文件分块上传。我将它们全部存储在具有相同“代号”的临时“上传”文件夹中,并在每个名称的末尾附加“-INDEX#”(INDEX# 是正在上传的块 #,由 Dropzone 传递)。


我已经将失败隔离到 PHP 循环遍历已经上传的块以获取内容的部分。具体来说,当我去获取内容时,我尝试使用 PHP 的“realpath”将块的文件路径保存到一个变量中,以获取绝对路径,并作为文件存在的真/假检查。毫无疑问,PHP 无法“看到”该文件。


我不是文件夹权限方面的专家,因此很有可能与此有关,而我只是不知道如何处理它。您会看到我确实在 PHP 顶部的 uploads/ 目录中尝试了 chmod。


我只包含了下面的 PHP 代码,没有包含任何 javascript。我不确定 JS 是否相关,因为它显然与实际的块上传工作得很好。


下面的 PHP 文件与块要结束的uploads/ 文件夹位于同一目录中。


<?php


header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");


/* ========================================

  VARIABLES

======================================== */


// chunk variables

$fileId = $_POST['dzuuid'];

$chunkIndex = $_POST['dzchunkindex'] + 1;

$chunkTotal = $_POST['dztotalchunkcount'];


// file path variables

$ds = DIRECTORY_SEPARATOR;

$targetPath = dirname( __FILE__ ) . "{$ds}uploads{$ds}";

$fileType = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));

$fileSize = $_FILES["file"]["size"];

$filename = "{$fileId}-{$chunkIndex}.{$fileType}";

$targetFile = $targetPath . $filename;


// change directory permissions

chmod(realpath($targetPath), 0777);


/* ========================================

  DEPENDENCY FUNCTIONS

======================================== */


$returnResponse = function ($info = null, $filelink = null, $status = "error") {

  die (json_encode( array(

    "status" => $status,

    "info" => $info,

    "file_link" => $filelink

  )));

};



婷婷同学_
浏览 298回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP