Go Back   CodingForums.com > :: Server side development > PHP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 05-31-2012, 01:03 AM   PM User | #1
SteeringFaith
New to the CF scene

 
Join Date: May 2012
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
SteeringFaith is an unknown quantity at this point
Exclamation Upload/Download Files From MYSQL with PHP

Hi,

I have been working on a script that uploads a file a user picks to a mysql server and then they are able to download it on another page. There are no errors in my script except that the size of the files when I check my sql database in phpmyadmin are a lot lower than the actual size of the files and when I download the files they won't open and are still small in size. Can you find the problem please I have looked everywhere?

Thanks, Eric


Form in HTML (index.html)
Code:
<form action="uploadTEST.php" method="post" enctype="multipart/form-data">
         
<!--         <p style="font-size:20px">Upload a file:</p> -->
         
         
         
         <tr><td>  IB2: 
	<input type=radio name="grade" value="IB2" />
	<br />
	IB1: 
	<input type=radio name="grade" value="IB1" />
	<br />
	FY: 
	<input type=radio name="grade" value="FY" />
	<br />
	Y2: 
	<input type=radio name="grade" value="Y2" />
	<br />
	Y1: 
	<input type=radio name="grade" value="Y1" /> 
	<br />
	<select name="Subject">
		
		<option value="History">History</option>
		<option value="Physics">Physics</option>
		<option value="Chemistry">Chemistry</option>
		<option value="Biology">Biology</option>
		<option value="Civics">Civics</option>
		<option value="Science">Science</option>
		<option value="Economics">Economics</option>
		<option value="Spanish">Spanish</option>
		<option value="Latin">Latin</option>
		<option value="French">French</option>
		<option value="Mathematics">Mathematics</option>
		<option value="English">English</option>
		<option value="Film">Film</option>
		<option value="Art">Art</option>
		<option value="Drama">Drama</option>
		<option value="Music">Music</option>
		<option value="Philosophy">Philosophy</option>
		<option value="TOK">TOK</option>
		<option value="Mandarin">Mandarin</option>
		<option value="Korean">Korean</option>
		<option value="German">German</option>
		
	</select>
	 
	</td></tr>
         	<tr><td><input type="file" method="post" name="file" enctype="multipart/form-data" /> 
	<input type="submit" name="submit" value="Upload File" />
	<tr><td align="center"><div class="fb-like" data-send="true" data-width="400" data-show-faces="true"></div>	</td></tr>
	
</form></td></tr>
         	
         	 <div id="right"></div>
         	
         		</div>
              </div>
UploadTEST.php
PHP Code:
<?php

//declare variables
$Server="xxxx";
$User="xxxx";
$Password="xxxxx";
$Database="xxxx";
$type $_FILES['file']['type'];
$size $_FILES['file']['size'];
$name $_FILES['file']['name'];
$file $_FILES['file']['tmp_name'];
$path "/usr/local/pem/vhosts/xxxx/webspace/httpdocs/upload/" $name;
$TheGrade $_POST['grade'];



//set permissions to allow
chmod($file,"0777");


//check for type of file
if ((($_FILES["file"]["type"] == "image/gif")
|| (
$_FILES["file"]["type"] == "image/jpeg")
|| (
$_FILES["file"]["type"] == "image/png")
|| (
$_FILES["file"]["type"] == "application/msword")
|| (
$_FILES["file"]["type"] == "application/pdf")
|| (
$_FILES["file"]["type"] == "text/plain")
|| (
$_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.presentationml.presentation")
|| (
$_FILES["file"]["type"] == "image/pjpeg")))

  {


//specify size limitations on file
if($size 1000000){

//move temporary file to permanent location
if(move_uploaded_file($file,$path)){
        
//open file and extract data
$fp fopen($path'r');
$data fread($fpfilesize($path));
$data addslashes($path);
fclose($fp);        
        
//connect to mysql
$connection mysql_connect($Server$User$Password);
if(!
$connection){
    die(
"Couldn't Connect" mysql_error());
}

//select database
mysql_select_db($Database$connection);

//Ensure security
if(!get_magic_quotes_gpc()){ 
$name addslashes($name);  
}
        
//specify grade database
    
if($TheGrade==IB2){

$gradetable="IB2FILES";
    
} elseif(
$TheGrade==IB1){

$gradetable="IB1FILES";
    
} elseif(
$TheGrade==FY){

$gradetable="FYFILES";
    
} elseif(
$TheGrade==Y2){

$gradetable="Y2FILES";
    
} elseif(
$TheGrade==Y1){

$gradetable="Y1FILES";
    
} else {
    
    echo 
"Connection error: No grade submission";
    
$gradetable=null;
    echo 
$gradetable;
    
}

//add quotes to variables for query
$size "'" $size "'"
$type "'" $type "'";    
$name "'" $name "'";    
$data "'" $data "'"

//declare query
$query "INSERT INTO " $gradetable " (name,type,size,file) VALUES (" $name "," $type "," $size "," $data ")";

//submit query
if(!mysql_query($query,$connection)){
    
    die(
"SQL Error! Query is $query<br />Error is: "mysql_error());
    
}
    
}else{
    
    echo 
"File failed to upload";
    
}

}else{
    
    echo 
"File size too large: " $size/1024 "Kb";
    
}

}else{
    
    echo 
"Please see the list of permitted file types: " $type " is not allowed.";
    
}

echo 
"";

?>
Downloads Page for IB2 (IB2Downloads.php)

PHP Code:
<?php

$Server
="xxxx";
$User="xxxx";
$Password="xxxxx";
$Database="xxxx";
$con mysql_connect($Server,$User,$Password);

if(!
$con){
    
    die(
"Couldn't Connect " mysql_error());
    
}

mysql_select_db($Database,$con);

$sql "SELECT * FROM IB2FILES";

$ctq mysql_query($sql,$con);
$rows mysql_num_rows($ctq);
if (!
$ctq)
{
    die(
"SQL Error! Query is $query<br />Error is ".mysql_error());
}

while (
$row mysql_fetch_assoc($ctq)) {
        
    echo 
"<form action=dl.php method=get>";    
    echo 
"<table> <tr> <td>";
    echo 
"ID: ";
    echo 
$row['id'];    
    echo 
"</td> </tr> <tr> <td>";
    echo 
"Name: ";
    echo 
$row['name'];
    echo 
"</td> </tr> <tr> <td>";
    echo 
"Type: ";
    echo 
$row['type'];
    echo 
"</td> </tr> <tr> <td>";
    echo 
"Size: ";
    echo 
$row['size'];
    echo 
" bytes";
    echo 
"</td> </tr> <tr> <td>";
    echo 
"File: ";
    echo 
$row['file'];
    echo 
" ";
    echo 
"<input type = submit value=Download File>";
    echo 
"<br/>";
    echo 
"<a href=dl.php?id=" $row['id'] . "&size=" $row['size'] . "&file=" $row['size'] . ">Download</a>";
    echo 
"</td> </tr> <tr> <td>";
    echo 
"</table>";
    echo 
"</form>";
}

?>
Downloading Actual File Page (dl.php)

PHP Code:
<?php

$ID 
$_GET['id'];

$Server="xxxx";
$User="xxxx";
$Password="xxxx";
$Database="xxxx";
$con mysql_connect($Server,$User,$Password);

if(!
$con){
    
    die(
"Couldn't Connect " mysql_error());
    
}

mysql_select_db($Database,$con);

$query "SELECT * FROM IB2FILES WHERE id = '$ID'";
$result  mysql_query($query) or die(mysql_error());

// define results into variables
$name=mysql_result($result,0,"name");
$size=mysql_result($result,0,"size");
$type=mysql_result($result,0,"type");
$file=mysql_result($result,0,"file");

header("Content-disposition: attachment; filename=$name");
header("Content-length: $size");
header("Content-type: $type");
echo 
$file;

mysql_close();

?>
I assume that is all the relevant information.

Thanks Again!
SteeringFaith is offline   Reply With Quote
Old 05-31-2012, 02:35 AM   PM User | #2
firepages
Super Moderator


 
Join Date: May 2002
Location: Perth Australia
Posts: 3,890
Thanks: 5
Thanked 79 Times in 78 Posts
firepages will become famous soon enough
here you set data to the file contents
PHP Code:
$data fread($fpfilesize($path)); 
here you overwrite data with the pathname
PHP Code:
$data addslashes($path); 
so you should concatenate if you really want to add the path to the file...
PHP Code:
$data .= addslashes($path); 
or are you trying to addslashes to the content ? in which case you should be ..

PHP Code:
$data addslashes($data); 
__________________
resistance is...

MVC is the current buzz in web application architectures. It comes from event-driven desktop application design and doesn't fit into web application design very well. But luckily nobody really knows what MVC means, so we can call our presentation layer separation mechanism MVC and move on. (Rasmus Lerdorf)
firepages is offline   Reply With Quote
Reply

Bookmarks

Tags
download, file, mysql, size, upload

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 11:05 AM.


Advertisement
Log in to turn off these ads.