Skip to content

Concurrent upload same files fails #44

@honzahana

Description

@honzahana

I'm working on new version of on-line photo printing software. So I tested your package. In this case often happens that users send the same file.

I enabled duplicate uploads via JS:

var flow = new Flow({
    target: 'upload.php',
    allowDuplicateUploads: true,
});

When you select same file multiple times until first upload is finished only one file is saved.

To easy reproduce use this code (upload.php):

<?php

require_once './vendor/autoload.php';

$config = new \Flow\Config();
$config->setTempDir('./tmp');
$request = new \Flow\Request();
$uploadFolder = './upload/'; // Folder where the file will be stored
$uploadFileName = uniqid()."_".$request->getFileName(); /
$uploadPath = $uploadFolder.$uploadFileName;
if (\Flow\Basic::save($uploadPath, $config, $request)) {
  // file saved successfully and can be accessed at $uploadPath
} else {
  // This is not a final chunk or request is invalid, continue to upload.
}
sleep(10);

And add sleep(5) to /vendor/flowjs/flow-php-server/src/Flow/File.php, line 192.

sleep(5);
if ($this->config->getDeleteChunksOnSave()) {
    $this->deleteChunks();
}

Just before chunks are merged.

Explanation: Flow.js creates same identifier for same fille. Flow-PHP-Server uses this identifier for chunk names (after hasing) = same chunk names for different uploads. When first file is merged chunks for next one are deleted. So another file cannot be created.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions