ProgerXP / FileDrop

Self-contained cross-browser pure JavaScript class for Drag & Drop and AJAX (multi) file upload.
filedropjs.org
The Unlicense
264 stars 61 forks source link

Upload but not saved #66

Closed ghost closed 7 years ago

ghost commented 7 years ago

Seems to work well out of the box. I got the reaction that the file is uploaded but i dont see it on the server.

What do i do wron??

ProgerXP commented 7 years ago

There can be many reasons and it's hard to say without seeing your server-side code.

ghost commented 7 years ago

This is my indexfile:

I dont know/cant understand where the upload directory is set //Jos

<!DOCTYPE html>

Plupload - Getting Started



        
    
            
ProgerXP commented 7 years ago

That's client-side, not server-side...

ghost commented 7 years ago

Do you mean this file: upload.php with my altered : $targetDir = "http://venes.biz/vergadering/modules/plupload/";

//jos

<?php /**

!! IMPORTANT:

!! this file is just an example, it doesn't incorporate any security checks and

!! is not recommended to be used in production environment as it is. Be sure to

!! revise it and customize to your needs.

// Make sure file is not cached (as it happens for example on iOS devices) header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");

/ // Support CORS header("Access-Control-Allow-Origin: "); // other CORS headers if any... if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { exit; // finish preflight CORS requests here } */

// 5 minutes execution time @set_time_limit(5 * 60);

// Uncomment this one to fake upload time // usleep(5000);

// Settings //$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload"; $targetDir = "http://venes.biz/vergadering/modules/plupload/"; //$targetDir = 'uploads'; $cleanupTargetDir = true; // Remove old files $maxFileAge = 5 * 3600; // Temp file age in seconds

// Create target dir if (!file_exists($targetDir)) { @mkdir($targetDir); }

// Get a file name if (isset($_REQUEST["name"])) { $fileName = $_REQUEST["name"]; } elseif (!empty($_FILES)) { $fileName = $FILES["file"]["name"]; } else { $fileName = uniqid("file"); }

$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;

// Chunking might be enabled $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0; $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;

// Remove old temp files if ($cleanupTargetDir) { if (!is_dir($targetDir) || !$dir = opendir($targetDir)) { die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}'); }

while (($file = readdir($dir)) !== false) { $tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;

// If temp file is current file proceed to the next if ($tmpfilePath == "{$filePath}.part") { continue; }

// Remove temp file if it is older than the max age and is not the current file if (preg_match('/.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge)) { @unlink($tmpfilePath); } } closedir($dir); }

// Open temp file if (!$out = @fopen("{$filePath}.part", $chunks ? "ab" : "wb")) { die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}'); }

if (!empty($_FILES)) { if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) { die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}'); }

// Read binary input stream and append it to temp file if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) { die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); } } else { if (!$in = @fopen("php://input", "rb")) { die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}'); } }

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

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

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

// Return Success JSON-RPC response die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}');

ProgerXP commented 7 years ago

It's not a FileDrop's upload.php script. You are trying to use plupload's server-side script with FileDrop. It will (probably) not work. Try with upload.php from FileDrop's repository.

ghost commented 7 years ago

Sorry wrong file/directory.(been testing more systems)

This is the upload script:

I cant find de place where i can alter de targetdirectory.

greetings Jos

<?php /*! FileDrop Revamped - server-side upload handler sample in public domain | http://filedropjs.org


This is an example of server-side script that handles both AJAX and IFrame uploads.

AJAX upload provides raw file data as POST input while IFrame is a POST request with $_FILES member set.

Result is either output as HTML with JavaScript code to invoke the callback (like JSONP) or in plain text if none is given (it's usually absent on AJAX). */

// If an error causes output to be generated before headers are sent - catch it. ob_start();

// Callback name is passed if upload happens via iframe, not AJAX (FileAPI). $callback = &$_REQUEST['fd-callback'];

// Upload data can be POST'ed as raw form data or uploaded via