Jump to content

Blank Image Appears As Content-Type: Image/jpeg


Keyth

Recommended Posts

Can anybody help with this please? Ive migrated server from oldbox to virtual dogsb machine and now when running the below script for some reason the image appears blank within the browser. This was written by developer whos not working for my company now and Im not a PHP coder, so need a little help! :'( I have looked on net etc and tried adapting code but cannot get image to appear. Im wondering if its an apache thing or php module needs loading???

 

Using Firebug outputs the following error:

Image corrupt or truncated: http:// www.companydo...jIzMTAxMDAuanBn

 


<?php
$myForm = "<form action='#' method='POST' enctype='multipart/form-data'>
Filename: <input type='file' name='ff' />
<input type='submit' value='Create Encoded URL...' />
</form>";

$myPass = "sbsf";
if(isset($_GET["v"])==true)
{
if(trim($_GET["v"])=="")
{
if(isset($_GET["pass"])){
if($_GET["pass"]==$myPass){
echo $myForm;
}
}
}
else
{
$xx=myDecode($_GET["v"]);
switch(strtoupper(substr($xx,-3,3)))
{
case "JPG": header('Content-Type: image/jpeg'); $type = 'image/jpeg'; break;
case "PNG": header('Content-Type: image/png'); $type = 'image/png'; break;
case "GIF": header('Content-Type: image/gif'); $type = 'image/gif'; break;
default: header('Content-Type: image/jpeg'); $type = 'image/jpeg'; break;
}
 
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($xx));
readfile($xx);
}

}
if(isset($_FILES["ff"]))
{
$vc = $_FILES["ff"];
$vx = myEncode(basename($vc["name"]));
$vxx =
move_uploaded_file($vc["tmp_name"], "" . $vc["name"]);
echo "<strong>External:</strong> ";
echo "<a href='http://www.companydomain.co.uk/fbin/?v=$vx'>http://www.companydomain.co.uk/fbin/?v=$vx</a><br>";
}
 
function myDecode($str){ return base64_decode(urldecode($str)); }

function myEncode($str){ return urlencode(base64_encode($str)); }
?>
 

Thanks for any help you can offer.

 

PS: All this script does is copy a file into the directory and provide a masked url which can be given to a user by email.

Edited by Keyth
Link to comment
Share on other sites

First of all I'd like to point out that the password check for the form is completely useless, as anyone can simply send a POST with a file attached and have it processed. You're only adding the password check to display the form, not process the submitted files, after all.

The urldecode () in the MyDecode () function is also not necessary, as the parameters are already decoded by the server. In fact, this can cause problems, in some circumstances.

 

You'll also want to use die () after the readfile () statement, to prevent the PHP script from further parsing (and thus adding any unwanted content to the end of the image).

And do yourself, and us, the favour of using proper variable names. Names that describe their content. It'll make things a whole lot easier to understand, and thus maintain. You will not remember 2 months from now what the variable $vx contained, nor how it was different from $vxx.

 

That said, I can't see anything immediately wrong with your script. Try removing the header () calls, and see what you get from PHP. Should give you an indication on what's wrong.

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.