Hey there!
I'm using the resize image demo and try to upload the photo's created to my server. Great app but I'm stuck at some things.
I'm using this upload script:
(sorry but attachment browse didn't work)
<?php
// Code for Session Cookie workaround
if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
} else if (isset($_GET["PHPSESSID"])) {
session_id($_GET["PHPSESSID"]);
}
session_start();
// Check the upload
if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
header("HTTP/1.1 500 Internal Server Error");
echo "invalid upload";
exit(0);
}
$POST_MAX_SIZE = ini_get('post_max_size');
$unit = strtoupper(substr($POST_MAX_SIZE, -1));
$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
header("HTTP/1.1 500 Internal Server Error"); // This will trigger an uploadError event in SWFUpload
echo "POST exceeded maximum allowed size.";
exit(0);
}
// Settings
$save_path = "../fotos/"; // The path were we will save the file (getcwd() may not be reliable and should be tested in your environment)
$upload_name = "Filedata";
$max_file_size_in_bytes = 2147483647; // 2GB in bytes
$extension_whitelist = array("jpg", "gif", "png"); // Allowed file extensions
$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-'; // Characters allowed in the file name (in a Regular Expression format)
// Other variables
$MAX_FILENAME_LENGTH = 260;
$file_name = "";
$file_extension = "";
$uploadErrors = array(
0=>"There is no error, the file uploaded with success",
1=>"The uploaded file exceeds the upload_max_filesize directive in php.ini",
2=>"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
3=>"The uploaded file was only partially uploaded",
4=>"No file was uploaded",
6=>"Missing a temporary folder"
);
// Validate the upload
if (!isset($_FILES[$upload_name])) {
HandleError("No upload found in \$_FILES for " . $upload_name);
exit(0);
} else if (isset($_FILES[$upload_name]["error"]) && $_FILES[$upload_name]["error"] != 0) {
HandleError($uploadErrors[$_FILES[$upload_name]["error"]]);
exit(0);
} else if (!isset($_FILES[$upload_name]["tmp_name"]) || !@is_uploaded_file($_FILES[$upload_name]["tmp_name"])) {
HandleError("Upload failed is_uploaded_file test.");
exit(0);
} else if (!isset($_FILES[$upload_name]['name'])) {
HandleError("File has no name.");
exit(0);
}
// Validate the file size (Warning: the largest files supported by this code is 2GB)
$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
if (!$file_size || $file_size > $max_file_size_in_bytes) {
HandleError("File exceeds the maximum allowed size");
exit(0);
}
if ($file_size <= 0) {
HandleError("File size outside allowed lower bound");
exit(0);
}
// Validate file name (for our purposes we'll just remove invalid characters)
$file_name = preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name']));
if (strlen($file_name) == 0 || strlen($file_name) > $MAX_FILENAME_LENGTH) {
HandleError("Invalid file name");
exit(0);
}
// Validate that we won't over-write an existing file
if (file_exists($save_path . $file_name)) {
HandleError("File with this name already exists");
exit(0);
}
// Validate file extension
$path_info = pathinfo($_FILES[$upload_name]['name']);
$file_extension = $path_info["extension"];
$is_valid_extension = false;
foreach ($extension_whitelist as $extension) {
if (strcasecmp($file_extension, $extension) == 0) {
$is_valid_extension = true;
break;
}
}
if (!$is_valid_extension) {
HandleError("Invalid file extension");
exit(0);
}
// Process the file
if (!@move_uploaded_file($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
if (!@copy($_FILES[$upload_name]["tmp_name"], $save_path.$file_name)) {
HandleError("Could not upload image");
exit(0);
}
function HandleError($message) {
echo $message;
}
// Get the image and create a thumbnail
$img = imagecreatefromjpeg($_FILES[$upload_name]['tmp_name']);
if (!$img) {
echo "ERROR:could not create image handle ". $_FILES[$upload_name]['tmp_name'];
exit(0);
}
$width = imageSX($img);
$height = imageSY($img);
if (!$width || !$height) {
echo "ERROR:Invalid width or height";
exit(0);
}
// Build the thumbnail
$target_width = 100;
$target_height = 100;
$target_ratio = $target_width / $target_height;
$img_ratio = $width / $height;
if ($target_ratio > $img_ratio) {
$new_height = $target_height;
$new_width = $img_ratio * $target_height;
} else {
$new_height = $target_width / $img_ratio;
$new_width = $target_width;
}
if ($new_height > $target_height) {
$new_height = $target_height;
}
if ($new_width > $target_width) {
$new_height = $target_width;
}
$new_img = ImageCreateTrueColor(100, 100);
if (!@imagefilledrectangle($new_img, 0, 0, $target_width-1, $target_height-1, 0)) { // Fill the image black
echo "ERROR:Could not fill new image";
exit(0);
}
if (!@imagecopyresampled($new_img, $img, ($target_width-$new_width)/2, ($target_height-$new_height)/2, 0, 0, $new_width, $new_height, $width, $height)) {
echo "ERROR:Could not resize image";
exit(0);
}
if (!isset($_SESSION["file_info"])) {
$_SESSION["file_info"] = array();
}
// Use a output buffering to load the image into a variable
ob_start();
imagejpeg($new_img);
$imagevariable = ob_get_contents();
ob_end_clean();
$file_id = md5($_FILES["Filedata"]["tmp_name"] + rand()*100000);
$_SESSION["file_info"][$file_id] = $imagevariable;
echo "FILEID:" .$file_id; // Return the file id to the script
?>
///////// END
And I've removed -> "addImage("thumbnail.php?id=" + serverData.substring(7));" from this function in handler.js
function uploadSuccess(file, serverData) {
try {
var progress = new FileProgress(file, this.customSettings.upload_target);
if (serverData.substring(0, 7) === "FILEID:") {
progress.setStatus("Thumbnail Created.");
progress.toggleCancel(false);
} else {
addImage("images/error.gif");
progress.setStatus("Error.");
progress.toggleCancel(false);
alert(serverData);
}
} catch (ex) {
this.debug(ex);
}
}
Can someone please help me fixing this error and help me upload to my server?
Thanks in advance!
February 10, 2010 - 1:18am
Did u get any resolution to this trouble?
M facing just similar issue.
Thanks a Times...
Ashish S
February 10, 2010 - 1:39pm
Tried everything, nothing works.
February 11, 2010 - 11:02am
Will someone install the DEBUG Flash Player and see if you get any messages with more details about this error?
We have not been able to reproduce it.
Also, some more details on things like Browser, Player version, Operating System, type and size of file, etc.
February 11, 2010 - 11:28am
The most common cause of this error (according to Google) is a bad URL or crossdomain URL.
Verify your URLs are valid and that you are uploading to the same server that hosts the swfupload.swf file.
February 11, 2010 - 4:50pm
I use the debug of swfupload, and I see the error I get there, what debug were you talking about?
In my case the upload url is fine, because startUpload works.
February 11, 2010 - 6:26pm
When does the error occur?
The Debug flash player is available from Adobe. It will show additional error messages that are normally hidden. Adobe's website has information on uninstalling the Flash Player and downloading and installing the Debug player.
February 11, 2010 - 7:27pm
SWF DEBUG: Event: uploadStart : File ID: SWFUpload_0_1
SWF DEBUG: StartUpload(): Uploading Type: Resized Image.
SWF DEBUG: PrepareThumbnail(): Beginning image resizing.
SWF DEBUG: Settings: Width: 1280, Height: 1024, Encoding: JPEG, Quality: 100.
SWF DEBUG: PrepareResizedImageCompleteHandler(): Finished resizing. Initializing MultipartURLLoader.
SWF DEBUG: Global Post Item: albumID=22
SWF DEBUG: Global Post Item: siteID=1
SWF DEBUG: Global Post Item: customerID=1
SWF DEBUG: ReturnUploadStart(): File accepted by startUpload event and readied for resized upload. Starting upload to for File ID: SWFUpload_0_1
SWF DEBUG: Event: uploadProgress (OPEN): File ID: SWFUpload_0_1
SWF DEBUG: Event: uploadError : IO Error : File ID: SWFUpload_0_1. IO Error: Error #2032
SWF DEBUG: Event: uploadComplete : Upload cycle complete.
Error Code: IO Error, File name: IMG_0014.JPG, Message: Error #2032
Here I uploaded a 3.5MB photo - it didn't even got to my upload script,
when I'm uploading 600KB or smaller then its getting to my upload script but not uploading the file [because of that thing you explained in other post]
April 6, 2010 - 2:22pm
It helped me at least.
in SWFUpload settings:
upload_url: "swfupload/upload.aspx" - caused error, i changed url to full path and now all works.