Jump to content

File doesn't get uploaded


bausman480

Recommended Posts

Hi,

 

I'm a complete PHP newbie, and I'm at my wits end with this. The code was working perfectly, and then suddenly decided to stop uploading my files. even the $_POST var that signals that the button to upload has been pressed is empty.

 

Here is my code. I'm not sure what is relevant to the error and what isn't, so I'm not going to delete any of the parts I think may be irrelevant... everything works fine until the upload form is submitted (all the way at the bottom), and then the var $_POST['upload'] is not set (about half way down).

 

THANK YOU!!!! If you could also point out the other gaping holes in this code that would be amazing. The base code is a joomla extension from www.webmotionuk.com that I've been trying to modify to my needs (note, this is NOT running on joomla and will not be). My other issue with this code has been my inability to use sessions such that two people accessing the site simultaneously don't see each other's uploads, but rather deal only with their own submitted data.

 

you can view this code in its "glory" at passport.undergraduatestrategygroup.com/upload_crop.php .

 

Thank you!!

 

<?php
session_start();

$_SESSION['option'] = $_POST['option'];
$upload_dir = "upload_pic"; 				// The directory for the images to be saved in
$upload_path = $upload_dir."/";				// The path to where the image will be saved
$large_image_name = $_SESSION['large_image_name'] = rand()."resized_pic.jpg"; 		// New name of the large image
$thumb_image_name = $_SESSION['thumb_image_name'] = rand()."thumbnail_pic.jpg"; 	// New name of the thumbnail image
$max_file = "4594304"; 						
$max_width = "700";							// Max width allowed for the large image
$thumb_width = $_SESSION['width'];						// Width of thumbnail image
$thumb_height = $_SESSION['height'];						// Height of thumbnail image

$_SESSION['width'] = 200;
$_SESSION['height'] = 280;


//Image functions
function resizeImage($image,$width,$height,$scale) {
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
$source = imagecreatefromjpeg($image);
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$image,90);
chmod($image, 0777);
return $image;
}
function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
$source = imagecreatefromjpeg($image);
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$thumb_image_name,90);
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
function getHeight($image) {
$sizes = getimagesize($image);
$height = $sizes[1];
return $height;
}
function getWidth($image) {
$sizes = getimagesize($image);
$width = $sizes[0];
return $width;
}

//Image Locations
$large_image_location = $upload_path.$large_image_name;
$thumb_image_location = $upload_path.$thumb_image_name;

//Create the upload directory with the right permissions if it doesn't exist
if(!is_dir($upload_dir)){
mkdir($upload_dir, 0777);
chmod($upload_dir, 0777);
}


//Check to see if any images with the same names already exist
if (file_exists($large_image_location)){
if(file_exists($thumb_image_location)){
	$thumb_photo_exists = $_SESSION['thumb_photo_exists'] = "<img src=\"".$upload_path.$thumb_image_name."\" alt=\"Thumbnail Image\"/>";
}else{
	$thumb_photo_exists = "";
}
   	$large_photo_exists = $_SESSION['large_photo_exists'] = "<img src=\"".$upload_path.$large_image_name."\" alt=\"Large Image\"/>";
} else {
   	$large_photo_exists = "";
$thumb_photo_exists = "";
}

if (isset($_POST["upload"])) {    //this is where the issue is, this variable is empty after submitting the upload form at the bottom of the code
//Get the file information
$userfile_name = $_FILES['image']['name'];
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$filename = basename($_FILES['image']['name']);
$file_ext = substr($filename, strrpos($filename, '.') + 1);

//Only process if the file is a JPG and below the allowed limit
if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
	if (($file_ext!="jpg") && ($userfile_size > $max_file)) {
		$error= "ONLY jpeg images under 1MB are accepted for upload";
	}
}else{
	$error= "Select a jpeg image for upload";
}
//Everything is ok, so we can upload the image.
if (strlen($error)==0){

	if (isset($_FILES['image']['name'])){

		move_uploaded_file($userfile_tmp, $large_image_location);
		chmod($large_image_location, 0777);

		$width = getWidth($large_image_location);
		$height = getHeight($large_image_location);
		//Scale the image if it is greater than the width set above
		if ($width > $max_width){
			$scale = $max_width/$width;
			$uploaded = resizeImage($large_image_location,$width,$height,$scale);
		}else{
			$scale = 1;
			$uploaded = resizeImage($large_image_location,$width,$height,$scale);
		}

		//Delete the thumbnail file so the user can create a new one
		if (file_exists($thumb_image_location)) {
			unlink($thumb_image_location);
		} 
	} else {
		echo "there's been an error with upload";
	}
	//Refresh the page to show the new uploaded image
	header("location:".$_SERVER["PHP_SELF"]);
	exit();
}
} 

if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists)>0) {
//Get the new coordinates to crop the image.
$x1 = $_SESSION['x1'] = $_POST["x1"];
$y1 = $_SESSION['y1'] = $_POST["y1"];
$x2 = $_SESSION['x2'] = $_POST["x2"];
$y2 = $_SESSION['y2'] = $_POST["y2"];
$w = $_SESSION['w'] = $_POST["w"];
$h = $_SESSION['h'] = $_POST["h"];
//Scale the image to the thumb_width set above
$scale = $thumb_width/$w;
$cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
//Reload the page again to view the thumbnail

include "constants.php";
		// prepare the image for insertion
                    $imgData =addslashes (file_get_contents($cropped));

                    // put the image in the db...
                    // select the db
                    mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());

                    // our sql query
                    $sql = "INSERT INTO test_image
                    (name)
                    VALUES
                    ('{$cropped}');";

                    // insert the image
                    mysql_query($sql) or die("Error in Query: " . mysql_error());
				$_SESSION['id']=mysql_insert_id();

if (file_exists($large_image_location)) {
	//unlink($large_image_location);
}



if (file_exists($thumb_image_location)) {		
	//unlink($thumb_image_location);
}
                    
header("location:".$_SERVER["PHP_SELF"]);
exit();
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload & Crop</title>
<script type="text/javascript" src="js/jquery-pack.js"></script>
<script type="text/javascript" src="js/jquery.imgareaselect-0.3.min.js"></script>
</head>

<body>
<?php
session_start();
//Only display the javacript if an image has been uploaded
if(strlen($large_photo_exists)>0){
$current_large_image_width = getWidth($large_image_location);
$current_large_image_height = getHeight($large_image_location);?>
<script type="text/javascript">
function preview(img, selection) { 
var scaleX = <?php echo $thumb_width;?> / selection.width; 
var scaleY = <?php echo $thumb_height;?> / selection.height; 

$('#thumbnail + div > img').css({ 
	width: Math.round(scaleX * <?php echo $current_large_image_width;?>) + 'px', 
	height: Math.round(scaleY * <?php echo $current_large_image_height;?>) + 'px',
	marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
	marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
});
$('#x1').val(selection.x1);
$('#y1').val(selection.y1);
$('#x2').val(selection.x2);
$('#y2').val(selection.y2);
$('#w').val(selection.width);
$('#h').val(selection.height);

} 

$(document).ready(function () { 
$('#save_thumb').click(function() {
	var x1 = $('#x1').val();
	var y1 = $('#y1').val();
	var x2 = $('#x2').val();
	var y2 = $('#y2').val();
	var w = $('#w').val();
	var h = $('#h').val();
	if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){
		alert("You must make a selection first");
		return false;
	}else{
		return true;
	}
});
}); 

$(window).load(function () { 
$('#thumbnail').imgAreaSelect({ aspectRatio: <?php echo $thumb_width;?> + ':' + <?php echo $thumb_height;?>, onSelectChange: preview }); 
});

</script>
<?php }?>
<h1>Photo Upload and Crop</h1>
<?php
session_start();
include "constants.php";
// select the db
mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());
//sql query
$sql = mysql_query("SELECT name FROM test_image WHERE id='$_SESSION[id]'");
//Display error message if there are any
if(strlen($error)>0){
echo "<ul><li><strong>Error!</strong></li><li>".$error."</li></ul>";
}
if(isset($_SESSION['id'])){
$_SESSION['pathname']=mysql_result($sql,0,"name");
echo "<img src=".$_SESSION['pathname'].">";
echo "  <form method='post' action='number.php' enctype='multipart/form-data'>";
echo "Option: <select name='number' size='1'>";
echo "<option value='2'>2 photos</option>";
echo "<option value='4'>4 photos</option>";
echo "</select>";
echo "<input type='hidden' name='session_name'>";
echo "<input type='submit' value='Submit'>";
echo "<br><a href=/form1.php>Go back</a>";
unset ($_SESSION['id'], $id);
}else{
	if(strlen($large_photo_exists)>0){?>
	<h2>Create Thumbnail</h2>
	<div align="center">
		<img src="<?php echo $upload_path.$large_image_name;?>" style="float: left; margin-right: 10px;" id="thumbnail" alt="Create Thumbnail" />
		<div style="float:left; position:relative; overflow:hidden; width:<?php echo $thumb_width;?>px; height:<?php echo $thumb_height;?>px;">
			<img src="<?php echo $upload_path.$large_image_name;?>" style="position: relative;" alt="Thumbnail Preview" />
		</div>
		<br style="clear:both;"/>
		<form name="thumbnail" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
			<input type="hidden" name="x1" value="" id="x1" />
			<input type="hidden" name="y1" value="" id="y1" />
			<input type="hidden" name="x2" value="" id="x2" />
			<input type="hidden" name="y2" value="" id="y2" />
			<input type="hidden" name="w" value="" id="w" />
			<input type="hidden" name="h" value="" id="h" />
			<input type="submit" name="upload_thumbnail" value="Save Thumbnail" id="save_thumb" />
		</form>
	</div>
<hr />
<?php 	} ?>
<h2>Upload Photo</h2>
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Photo <input type="file" name="image" size="30" /> <input type="hidden" name="MAX_FILE_SIZE" value="40000000"> <input type="submit" name="upload" value="Upload" />
</form>
<?php } ?>
</body>
</html>

Link to comment
Share on other sites

I did though... its in there, in the original code (scroll all the way to the bottom).

 

<h2>Upload Photo</h2>
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Photo <input type="file" name="image" size="30" /> <input type="hidden" name="MAX_FILE_SIZE" value="40000000"> <input type="submit" name="upload" value="Upload" />
</form>

Link to comment
Share on other sites

Thank you for replying so quickly! :)

The file_uploads is set to "On" (see screenshot here: http://cl.ly/1W2U2503430e1l3t0f0m).

 

The files were uploading perfectly for the entire day today. And then they stopped. I have unlimited space on the server so i don't think that's the issue either. Its gotta be the code - I'm not 100% sure I didn't change something crucial. But I've been looking at it for so long that it just all looks like gibberish by now...

Link to comment
Share on other sites

The funny part is the image still gets uploaded. I can see it in my directory, exactly where its supposed to be.

But the page just refreshes as though $_POST['upload'] is not set... even though it just uploaded the file. what??

 

I'm so confused.

Link to comment
Share on other sites

I got the issue solved - except it takes away vital functionality. :D

I want to have the large image saved in the upload directory instead of getting deleted. I'm already doing this with the thumbnail image - I did this by adding the rand() function to the beginning of the thumbnail name. But if I do the same thing to the large image, it causes the error described above... So how do I get the large image to save and not get deleted without breaking my code?

 

$large_image_name = $_SESSION['large_image_name'] = "resized_pic.jpg"; 		
$thumb_image_name = $_SESSION['thumb_image_name'] = rand()."thumbnail_pic.jpg";

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.