2016-08-12 5 views
0

In meiner Website möchte ich Bild mit PHP in Server hochladen. Aber dieses Ding funktioniert gut mit kleinem Bild, aber nicht mit großem Bild. Ich möchte nur auf Mobilgeräte geklickte Bilder hochladen. Hier ist meine Form Bild hochladenGroßes Bild wird nicht hochgeladen in Server mit PHP

<form action="newupload.php" enctype="multipart/form-data" method="post"> 
    <div class="form-group"> 
     <div id="image-cropper"> 
      <input type="file" name="user_image" class="cropit-image-input" style="font-weight: bold;" /> 
     </div> 
    </div> 
    <div class="form-group"> 
     <input type="text" name="title" class="input-round big-input" id="title-modal" placeholder="Enter your Image Title" required/> 
    </div> 
    <div class="form-group"> 
     <!-- required --> 
     <span class="required margin-three">*Please complete all fields correctly</span> 
     <!-- end required --> 
     <p class="text-center"> 
      <button class="btn btn-black no-margin-bottom btn-medium btn-round no-margin-top" type="submit" id="submitbtn">Submit</button> 
     </p> 
    </div> 
</form> 

Hier ist mein PHP-Skript für das Hochladen:

$errors = 0; 

error_reporting(E_ALL); 
require_once 'mysqli_connect.php'; 
session_start(); 

$email = $_SESSION['user_email']; 
$q = "select * from user where u_email='$email'"; 
$qres=mysqli_query($dbc,$q); 
$qrow=mysqli_fetch_array($qres,MYSQLI_ASSOC); 
$u_id=$qrow['u_id']; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (!empty($_FILES['user_image']['name']) && !empty($_POST['title'])) { 
     $image = $_FILES['user_image']['name']; 
     $uploadedfile = $_FILES['user_image']['tmp_name']; 
     $image_title = $_POST['title']; 
     $t = uniqid(); 
     $filenamee = 'user-'.$t; 
     $path = 'uploaded/'; 
     $filename = $path.$filenamee.".jpg"; 

     if (move_uploaded_file($_FILES['user_image']['tmp_name'], $filename)) { 
      $query = "insert into selfiepost (u_id,s_title,s_upload,upload_time) v  values ('$u_id','$image_title','$filename',now())"; 
      $res = mysqli_query($dbc, $query); 
      if ($res) { 
       header('Location:home.php?insert=1'); 
      } else{ 
       header('Location:home.php?insert=0'); 
      } 
     } else { 
      echo "Sorry, File not uploaded successfully. Please try again!!"; 
     } 
    } else { 
     echo "Files should not be empty!!"; 
    } 
} 

Meine php.ini Datei enthält nur diese fünf Dinge:

upload_max_filesize 20M 
post_max_size 40M 
max_input_time 180 
max_execution_time 60 
memory_limit 48M 
+0

Besuchen Sie und verwenden Sie http://php.net/manual/en/features.file-upload.errors.php --- http://php.net/manual/en/function.error-reporting.php und Betrachten Sie die Informationen Ihres Systems mit 'phpinfo()'. –

+0

Verwenden Sie diesen Link: -https: //www.sitepoint.com/upload-large-files-in-php/. füge diesen code in deine php-datei ein und überprüfe –

+0

Siehst du einen Fehler im Browser (über F12) in der Netzwerk-/Konsolen-Registerkarte während des Hochladens? Siehst du Fehler in den Apache- oder PHP-Protokollen auf dem Server? Was ist die in der PHP.ini definierte Fehlerstufe? – Cagy79

Antwort

0

Schritte:

  1. Überprüfen Sie, ob PHP e rror
  2. Definieren Sie Ihre eigene maximale Größe für diese App.
  3. Erhalten Sie tatsächliche maximale Upload-Größe (basierend auf Ihren eigenen maximalen Größe und Servereinstellungen).
  4. Überprüfen Sie, ob die Dateigröße überschreitet den Grenzwert

function convertToBytes($value) { 
    if (is_numeric($value)) { 
    return $value; 
    } else { 
    $value_length = strlen(trim($value)); 
    $bytes = substr($value, 0, $value_length - 1); 
    $unit = strtolower(substr($value, $value_length - 1)); 
    switch($unit) { 
     case 'g': 
     $bytes *= 1024; 
     case 'm': 
     $bytes *= 1024; 
     case 'k': 
     $bytes *= 1024; 
    } 
    return $bytes;    
    } 
} 

function getFileUploadMaxSize($app_config_max_size) { 
    return min(min(convertToBytes(ini_get('post_max_size')), convertToBytes(ini_get('upload_max_filesize'))), $app_config_max_size); 
} 


try { 
    if ($_FILES['user_image']['error'] != UPLOAD_ERR_OK) { // (step 1) 
     throw new Exception(_FILES['user_image']['error']); 
    } 
    $app_config_max_size = 10485760; // 10MB (step 2) 
    $max_size = getFileUploadMaxSize($app_config_max_size); // (step 3) 
    if ($_FILES['user_image']['size'] > $max_size) { // (step 4) 
     throw new Exception('limit exceeded'); 
    } 

    ... rest of your upload code ... 

} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
0

der Fehler aufgrund upload_max_filesize nun auf 2M gesetzt wurde ich es 64M Dank an alle für ihre Kommentar zu ändern!

Verwandte Themen