Topic: Weird Filenames upon upload

I have been successful in porting over plupload into Codeigniter (thanks to this forum), but when a user uploads a file, the filename comes out like this: _1, _2, _3, etc.

What could be causing this error?

Re: Weird Filenames upon upload

bump

Re: Weird Filenames upon upload

There is a bug in the upload.php file where it checks uniqueness and if chuking is enabled it will produce a new file for each chunk. Will try to release a fix for this a.s.a.p.

Re: Weird Filenames upon upload

Sounds good... in the meantime is there anything I can do to try to fix this?

Re: Weird Filenames upon upload

So I am back to square one with trying to get this to work with CodeIgniter. When I tried reading the error message coming back from the uploader (after having to dig through the src js files) I binded the error to my plupload queue and got the following message:

Error #2038

I can't find any documentation anywhere stating what this means.

Here is my js file

buildUrl:function(l,k){var m="";d.each(k,function(o,n){m+=(m?"/":"")+encodeURIComponent(n)+"/"+encodeURIComponent(o)});if(m){l+=(l.indexOf("?")>0?"/":"/")+m}return l}

I changed it so that this script would "work" with CodeIgniter.

Here is my codeigniter controller

function do_upload($fileName) {
        // Settings
            $targetDir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/";
            $cleanupTargetDir = false; // Remove old files
            $maxFileAge = 60 * 60; // Temp file age in seconds
            // 5 minutes execution time
            @set_time_limit(5 * 60);
            // usleep(5000);
            // Get parameters
            $chunk = isset($_REQUEST["chunk"]) ? $_REQUEST["chunk"] : 0;
            $chunks = isset($_REQUEST["chunks"]) ? $_REQUEST["chunks"] : 0;
       
            // Clean the fileName for security reasons
            // $fileName = preg_replace('/[^\w\._]+/', '', $fileName);
            // Create target dir
            if (!file_exists($targetDir))
                @mkdir($targetDir);
            // Remove old temp files
            if (is_dir($targetDir) && ($dir = opendir($targetDir))) {
                while (($file = readdir($dir)) !== false) {
                    $filePath = $targetDir . DIRECTORY_SEPARATOR . $file;
                    // Remove temp files if they are older than the max age
                    if (preg_match('/\\.tmp$/', $file) && (filemtime($filePath) < time() - $maxFileAge))
                        @unlink($filePath);
                }
                closedir($dir);
            } else
                die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
            // Look for the content type header
            if (isset($_SERVER["HTTP_CONTENT_TYPE"]))
                $contentType = $_SERVER["HTTP_CONTENT_TYPE"];
            if (isset($_SERVER["CONTENT_TYPE"]))
                $contentType = $_SERVER["CONTENT_TYPE"];
            if (strpos($contentType, "multipart") !== false) {
                if (isset($_FILES['file']['tmp_name']) && is_uploaded_file($_FILES['file']['tmp_name'])) {
                    // Open temp file
                    $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab");
                    if ($out) {
                        // Read binary input stream and append it to temp file
                        $in = fopen($_FILES['file']['tmp_name'], "rb");
                        if ($in) {
                            while ($buff = fread($in, 4096))
                                fwrite($out, $buff);
                        } else
                            die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
                        fclose($out);
                        unlink($_FILES['file']['tmp_name']);
                    } else
                        die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
                } else
                    die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
            } else {
                // Open temp file
                $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab");
                if ($out) {
                    // Read binary input stream and append it to temp file
                    $in = fopen("php://input", "rb");
                    if ($in) {
                        while ($buff = fread($in, 4096))
                            fwrite($out, $buff);
                    } else
                        die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
                    fclose($out);
                } else
                    die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
            }
            // Return JSON-RPC response
            die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}');
        }

I really am trying to get this script done, but am in need of some help. Is there anything you can think of that would cause this to not work?

Re: Weird Filenames upon upload

Try the latest GitHub version. Could be some cross domain issue or similar. The error you are getting is Flash related and it's a IO error so I would guess it can't do the request to the server somehow. The current GitHub version has crossdomain loading and submitting support.

Re: Weird Filenames upon upload

I shall have to try that... yeah I noticed that the HTML5 version of this was working just fine... the Flash version was giving me fits... and since my client uses IE, well HTML5 is out of the question tongue