1

I am creating simple file upload (for pictures). I tried in Opera and in FireFox and uploading is working fine. But when I upload via Google Chrome, picture is not uploaded. Can you please tell me where is problem:

here is php script that is used for storing picture in database

<?php $id=$_SESSION['user_id']; $user_id=$_SESSION['user_id']; $album_id=$_POST['album']; $max_size = 500; // Sets maxim size allowed for the uploaded files, in kilobytes // sets an array with the file types allowed $allowtype = array('bmp', 'gif', 'htm', 'html', 'jpg', 'jpeg', 'mp3', 'pdf', 'png', 'rar', 'zip'); // if the folder for upload (defined in $updir) doesn't exist, tries to create it (with CHMOD 0777) /*if (!is_dir($updir)) mkdir($updir, 0777);*/ /** Loading the files on server **/ $result = array(); // Array to store the results and errors // if receive a valid file from server if (isset ($_FILES['files'])) { // checks the files received for upload $file_name=$_FILES['files']['name']; $file_type=$_FILES['files']['type']; $file_size=$_FILES['files']['size']; $file_tmp=$_FILES['files']['tmp_name']; for($f=0; $f<count($_FILES['files']['name']); $f++) { $file_name = $_FILES['files']['name'][$f]; $random_name=rand(); // checks to not be an empty field (the name of the file to have more then 1 character) if(strlen($file_name)>1) { // checks if the file has the extension type allowed $type=explode('.', $file_name); $type=end($type); if (in_array($type, $allowtype)) { // checks if the file has the size allowed if ($_FILES['files']['size'][$f]<=$max_size*1000) { // If there are no errors in the copying process if ($_FILES['files']['error'][$f]==0) { $query = mysql_query("SELECT username from users WHERE id = '$id' "); while($run=mysql_fetch_array($query)){ $username=$run['username']; } $query = mysql_query("SELECT album.name an from album WHERE album.id = '$album_id' "); while($run=mysql_fetch_array($query)){ $album_name=$run['an']; } mysql_query("INSERT INTO photos VALUE ('', '$album_id', '$random_name.jpg', '$user_id')"); // Sets the path and the name for the file to be uploaded // If the file cannot be uploaded, it returns error message if (move_uploaded_file ($_FILES['files']['tmp_name'][$f],"./users/".$username."/".$album_name."/".$random_name.".jpg")) { /*$result[$f] = ' The file could not be copied, try again';*/ $result[$f] = '<b>'.$file_name.'</b> - OK'; } else { $result[$f] = ' The file could not be copied, try again'; } } } else { $result[$f] = 'The file <b>'. $file_name. '</b> exceeds the maximum allowed size of <i>'. $max_size. 'KB</i>'; } } else { $result[$f] = 'File type extension <b>.'. $type. '</b> is not allowed'; } } } // Return the result $result2 = implode('<br /> ', $result); echo '<h4>Files uploaded:</h4> '.$result2; } ?> 

and here is form that is used for picture uploading:

 <form id="uploadform" action="uploaderimg.php" method="post" enctype="multipart/form-data" target="uploadframe" onSubmit="uploading(this); return false"> <br> Select album: <select name="album"> <?php $query=mysql_query("SELECT id, name, user_id FROM album WHERE user_id = '$id'"); while($run=mysql_fetch_array($query)){ $album_id=$run['id']; $album_name=$run['name']; $album_user = $run['user_id']; echo "<option value='$album_id'>$album_name</option>"; } ?> </select> <br /><br /> <h1>Chose your photo/s</h1> <br> <input type="file" name="files[]" /> <input type="submit" value="UPLOAD" id="sub" /> </form> 

EDIT:

THis is error according to PHP(it's in first script that store uploaded file):

Notice: Undefined index: album in.. 
20
  • Is session_start(); included in all your files? I see no mention of it. Commented Oct 2, 2013 at 20:24
  • Not working as in...? Do you get an error message? Add some debug messages to your code to see what code path it takes. Commented Oct 2, 2013 at 20:24
  • Why name the input files[] rather than thefile? Is there an array? Commented Oct 2, 2013 at 20:25
  • @Aneri <input type="file" name="files[]" /> Commented Oct 2, 2013 at 20:26
  • 1
    @OIS You may very well be right, however and I quote the OP "I tried in Opera and in FireFox and uploading is working fine. But when I upload via Google Chrome, picture is not uploaded." So why not "Chrome"? I'm suspecting onSubmit="uploading(this); return false" Commented Oct 2, 2013 at 20:43

1 Answer 1

2

After conversing with the OP, the problem lay in this line:

<form id="uploadform" action="uploaderimg.php" method="post" enctype="multipart/form-data" target="uploadframe" onSubmit="uploading(this); return false"> 

Where onSubmit="uploading(this); return false" was at fault.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.