Skip to content

write final file procedure #5

@escapesw

Description

@escapesw

Hello,

When using chunks, the final file is recomposed from chunk files.
This procedure takes a lot of time: takes as much as you were copying the file intro another file (on se same disk). Consider a copy of 10GB file, thats too much.

I've changed the class, using the example from here
https://github.com/moxiecode/plupload/blob/master/examples/upload.php
loose "write_file_to" and "write_chunks_to_file" functions

and leave only

$file_path = rtrim($conf['target_dir'], DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $file_name;

            // Open temp file
            if (!$out = @fopen("{$file_path}.part", $conf['chunks'] ? "ab" : "wb")) {
                throw new Exception('', PLUPLOAD_OUTPUT_ERR);
            }

            if (!empty($_FILES)) {
                if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
                    throw new Exception('', PLUPLOAD_MOVE_ERR);
                }

                // Read binary input stream and append it to temp file
                if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) {
                    throw new Exception('', PLUPLOAD_INPUT_ERR);
                }
            }

            while ($buff = fread($in, 4096)) {
                fwrite($out, $buff);
            }

            @fclose($out);
            @fclose($in);

            // Check if file has been uploaded
            if (!$conf['chunks'] || $conf['chunk'] == $conf['chunks'] - 1) {
                // Strip the temp .part suffix off
                rename("{$file_path}.part", $file_path);
            }

            return array(
            'name' => $file_name,
            'path' => $file_path,
            //'size' => filesize($file_path)
            );

thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions