Lloydinator Lloydinator - 24 days ago 5
PHP Question

Getting error with file upload in php

Can anyone deduce what might be the issue here with my code? When I'm trying to upload a PDF file over 8 MB, this is the message I get:


Something went wrong [No file uploaded]File already on server.


This is the code that I typed up:

<?php
$name = $_FILES['file']['name'];
$storefile_loc = "uploads/";
$storefile_path = $storefile_loc.basename($name);

//$get_ext=explode(".",$_FILES['file']['name']); //separates file name from extension
//$ext=end($get_ext); //gets the extension from above explosion
$txtFileType = pathinfo($storefile_path,PATHINFO_EXTENSION);
$goodext = array("txt","doc","odt","docx"); //array of extensions for app

//Check if files are .txt (.doc, and .pdf functionality to be added)
if (isset($_POST["submit"])){ //checks if form has been submitted
//$check=mime_content_type($name);
if (($_FILES['file']['type'] == "text/plain")
||($_FILES['file']['type'] == "application/pdf")
||($_FILES['file']['type'] == "application/vnd.oasis.opendocument.text")
||($_FILES['file']['type'] == "application/msword")
||($_FILES['file']['type'] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
&&(in_array($txtFileType,$goodext))){
echo "Uploading File...";
}
else {
echo "You can only upload a txt/doc/docx/pdf/odt file.";
}
}
else {
echo "Something went wrong [No file uploaded]";
}

//Check if file already exists. Probably won't need this
if (file_exists($storefile_path)){ //this instead of $name because it's checking server
echo "File already on server.";
}

//Check file size
if ($_FILES['file']['size'] > 2000000){
echo "File is too large.";
}


//Way to upload permanently. Probably won't need this
/*
if (move_uploaded_file($_FILES['file']['tmp_name'], $storefile_path)){
echo "The file '".basename($_FILES['file']['name'])."' has been uploaded.";
}
else {
echo "Something went wrong when uploading your file.";
}
*/

?>


I also get notice errors on lines 2 an 36. Is the problem with my code? Or is it with Apache?

Answer

Try increasing these settings in the php.ini, the default size ( typically ) is 8MB

  ; Maximum allowed size for uploaded files.
  upload_max_filesize = 40M;
  ; Must be greater than or equal to upload_max_filesize
  post_max_size = 40M;

And after that you have to restart your server to apply these settings.

What this means is that PHP is limiting your file upload size to these 2 settings. You may not need 40M but you should increase it to maybe something like 120% of the largest file you want to upload, which will give you a bit of breathing room.

This is typically the first thing I configure on my servers and I usually do about 80MB, anything more then that and it's just easier for my clients to use sFTP.