PHP upload afbeelding

Ok, ik heb hier veel te veel tijd in geïnvesteerd. Ik ben nieuw in PHP-programmeren en probeer de basis te begrijpen, maar ik ben een beetje verdwaald sinds gisteravond. Ik kon een PHP-formulier krijgen om basisgegevens zoals een naamadres en zo te uploaden naar mijn (MySQL) server.

Maar vandaag zei ik: laten we de volgende stap doen, namelijk een afbeelding naar de server.
Ik heb 3 video’s op YouTube bekeken, waarschijnlijk 100 keer, alleen de code overnemen en het op zoveel verschillende manieren proberen.

http://www.youtube.com/watch?v=CxY3FR9doHI
http://www.youtube.com/watch?v=vFZfJZ_WNC4&feature=relmfu

en heb het nog steeds niet kunnen krijgen.

Maar om een lang verhaal kort te maken: ik heb een config.php-bestand dat verbinding maakt met de server en hier is de code die ik gebruik op de uploadformulierpagina:

<html>
  <head>
    <title>Upload an image</title>
  </head>
<body>
  <form action="UploadContent.php" method="POST" enctype="multipart/form-data">
  File:
    <input type="file" name="image"> <input type="submit" value="Upload">
  </form>
<?php
// connect to database
include"config.php";
// file properties
$file = $_FILES['image']['tmp_name'];
if (!isset($file))
  echo "Please select a profile pic";
else
{
  $image = addslashes(file_get_content($_FILES['image']['tmp_name']));
  $image_name = addslashes($FILES['image']['name']);
  $image_size = getimagesize($_FILES['image']['tmp_name']);
  if ($image_size==FALSE)
    echo "That isn't a image.";
  else
  {
    $insert = mysql_query("INSERT INTO content VALUES ('','','','','','','','','','$image_name','$image',)");
  }
}
?>
  </body>
</html>

De reden voor alle '', '', '', ''op de invoegregel is omdat ik de naam in het 10e veld heb en de afbeeldingsblob in de 11e en alle degenen die daartoe leiden zijn voornaam, achternaam en willekeurige dingen zoals dat. Hoe kan ik dit oplossen? Het geeft de fout terug:

Fatale fout: oproep naar niet-gedefinieerde functie file_get_content() in /home/content/34/9587634/html/WEBPAGE/UploadContent.php op regel 22

Ik weet niet wat ik moet doen.


Antwoord 1, autoriteit 100%

De code ziet het aanroepen van de functie move_uploaded_file() over het hoofd, die zou controleren of het aangegeven bestand geldig is om te uploaden.

Misschien wilt u een eenvoudig voorbeeld bekijken op:

http://www.w3schools.com/php/php_file_upload.asp


Antwoord 2, autoriteit 50%

Je moet twee nieuwe bestanden toevoegen, één is index.html, kopieer en plak de onderstaande code en de andere is imageup.php die je afbeelding zal uploaden

<form action="imageup.php" method="post" enctype="multipart/form-data">
 <input type="file" name="banner" >
 <input type="submit" value="submit">
 </form>
 imageup.php
 <?php
 $banner=$_FILES['banner']['name']; 
 $expbanner=explode('.',$banner);
 $bannerexptype=$expbanner[1];
 date_default_timezone_set('Australia/Melbourne');
 $date = date('m/d/Yh:i:sa', time());
 $rand=rand(10000,99999);
 $encname=$date.$rand;
 $bannername=md5($encname).'.'.$bannerexptype;
 $bannerpath="uploads/banners/".$bannername;
 move_uploaded_file($_FILES["banner"]["tmp_name"],$bannerpath);
 ?>

De bovenstaande code zal je afbeelding uploaden met een gecodeerde naam


Antwoord 3, autoriteit 40%

Wijzig functie file_get_content()in uw code in file_get_contents(). Je mist ‘s’ aan het einde van de functienaam. Daarom geeft het een ongedefinieerde functiefout.

file_get_contents()

Verwijder de laatste onnodige komma nadat $imagein de regel is geplaatst

"INSERT INTO content VALUES         ('','','','','','','','','','$image_name','$image',)

Antwoord 4, autoriteit 20%

Ik raad u aan om de afbeelding op de server op te slaan en vervolgens de URL op te slaan in de MYSQL-database.

Allereerst moet u uw afbeelding meer valideren, voordat niet-gevalideerde bestanden tot enorme beveiligingsrisico’s kunnen leiden.

  1. Bekijk de afbeelding

    if (empty($_FILES['image']))
      throw new Exception('Image file is missing');
    
  2. Sla de afbeelding op in een variabele

    $image = $_FILES['image'];
    
  3. Controleer de uploadtijdfouten

    if ($image['error'] !== 0) {
       if ($image['error'] === 1) 
          throw new Exception('Max upload size exceeded');
       throw new Exception('Image uploading error: INI Error');
    }
    
  4. Controleer of het geüploade bestand op de server staat

    if (!file_exists($image['tmp_name']))
        throw new Exception('Image file is missing in the server');
    
  5. Valideer de bestandsgrootte (wijzig deze naar wens)

    $maxFileSize = 2 * 10e6; // = 2 000 000 bytes = 2MB
        if ($image['size'] > $maxFileSize)
            throw new Exception('Max size limit exceeded'); 
    
  6. Bevestig de afbeelding (controleer of het bestand een afbeelding is)

    $imageData = getimagesize($image['tmp_name']);
         if (!$imageData) 
         throw new Exception('Invalid image');
    
  7. Valideer het mime-type van de afbeelding (doe dit volgens uw behoeften)

    $mimeType = $imageData['mime'];
     $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
     if (!in_array($mimeType, $allowedMimeTypes)) 
        throw new Exception('Only JPEG, PNG and GIFs are allowed');
    

Dit kan je helpen om een beveiligd script voor het uploaden van afbeeldingen te maken met PHP.

Codebron: https://developer.hyvor.com/ php/image-upload-ajax-php-mysql

Bovendien raad ik u aan door MYSQLI voorbereide instructieste gebruiken voor vragen om de beveiliging te verbeteren.

Bedankt.


Antwoord 5, autoriteit 10%

Eenvoudige PHP bestand/afbeelding uploadcode op dezelfde pagina.

<form action="" method="post" enctype="multipart/form-data">
  <table border="1px">
    <tr><td><input type="file" name="image" ></td></tr>
    <tr><td> <input type="submit" value="upload" name="btn"></td></tr>
  </table>
</form>
 <?php
   if(isset($_POST['btn'])){
     $image=$_FILES['image']['name']; 
     $imageArr=explode('.',$image); //first index is file name and second index file type
     $rand=rand(10000,99999);
     $newImageName=$imageArr[0].$rand.'.'.$imageArr[1];
     $uploadPath="uploads/".$newImageName;
     $isUploaded=move_uploaded_file($_FILES["image"]["tmp_name"],$uploadPath);
     if($isUploaded)
       echo 'successfully file uploaded';
     else
       echo 'something went wrong'; 
   }
 ?>

Antwoord 6, autoriteit 10%

Hier is een eenvoudig voorbeeld van hoe een afbeeldingsbestand met bepaalde beperkingen (hieronder vermeld) naar de server kan worden geüpload.

  • Bestaan van de afbeelding.
  • Beeldextensievalidatie
  • Controleert op afbeeldingsgrootte.

    <?php
       $newfilename = "newfilename";
       if(isset($_FILES['image'])){
          $errors= array();
          $file_name = $_FILES['image']['name'];
          $file_size =$_FILES['image']['size'];
          $file_tmp =$_FILES['image']['tmp_name'];
          $file_type=$_FILES['image']['type'];
          $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
          $expensions= array("jpeg","jpg","png");
          if(file_exists($file_name)) {
            echo "Sorry, file already exists.";
            }
          if(in_array($file_ext,$expensions)=== false){
             $errors[]="extension not allowed, please choose a JPEG or PNG file.";
          }
          if($file_size > 2097152){
             $errors[]='File size must be excately 2 MB';
          }
          if(empty($errors)==true){
            move_uploaded_file($file_tmp,"images/".$newfilename.".".$file_ext);
            echo "Success";
            echo "<script>window.close();</script>";
          }
          else{
             print_r($errors);
          }
       }
    ?>
    <html>
       <body>
          <form action="" method="POST" enctype="multipart/form-data">
             <input type="file" name="image" />
             <input type="submit"/>
          </form>
       </body>
    </html>
    

    Credit to deze pagina.


Antwoord 7

<?php
$filename=$_FILES['file']['name'];
$filetype=$_FILES['file']['type'];
if($filetype=='image/jpeg' or $filetype=='image/png' or $filetype=='image/gif')
{
move_uploaded_file($_FILES['file']['tmp_name'],'dir_name/'.$filename);
$filepath="dir_name`enter code here`/".$filename;
}
?> 

Antwoord 8

 <?php 
 $target_dir = "images/";
    echo $target_file = $target_dir . basename($_FILES["image"]["name"]);
    $post_tmp_img = $_FILES["image"]["tmp_name"];
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
    $post_imag = $_FILES["image"]["name"];
        move_uploaded_file($post_tmp_img,"../images/$post_imag");
 ?>

Antwoord 9

Deze code is zeer eenvoudig te uploaden met PHP. In deze code presteer ik uploadstaak op dezelfde pagina die onze HTML- en PHP-code in hetzelfde bestand betekenen. Deze code genereert een nieuwe naam van de beeldnaam.

Zie eerst de HTML-code

<form action="index.php" method="post" enctype="multipart/form-data">
 <input type="file" name="banner_image" >
 <input type="submit" value="submit">
 </form>

Zie nu de PHP-code

<?php
$image_name=$_FILES['banner_image']['name'];
       $temp = explode(".", $image_name);
        $newfilename = round(microtime(true)) . '.' . end($temp);
       $imagepath="uploads/".$newfilename;
       move_uploaded_file($_FILES["banner_image"]["tmp_name"],$imagepath);
?>

Other episodes