2016-05-27 9 views
0

Ich habe eine benutzerdefinierte Seitenvorlage mit einem Formular, das jeder Besucher der Website eine Datei hochladen kann. Jetzt möchte ich den Dateityp einschränken, der hochgeladen wird (nur docx, doc und pdf) und ich beschränke die Dateigröße auf 2MB.Wie kann der Dateityp zum Hochladen in WordPress eingeschränkt werden?

Wie geht das? Ich habe bereits eine Funktion, die der Benutzer hochladen darf, aber ich weiß nicht, wie man den Dateityp einschränkt, der hochgeladen werden darf. Bitte hilf mir.

Begrenzen der Datei funktioniert jetzt, aber es ist seltsam, warum die Datei noch speichern, auch wenn die Datei zu groß ist. Wie behebe ich das?

PHP in benutzerdefinierte Seitenvorlage

if(isset($_POST['submit'])){ 
    $firstName = isset($_POST['firstName']) ? $_POST['firstName'] : ''; 
    $middleName = isset($_POST['middleName']) ? $_POST['middleName'] : ''; 
    $lastName = isset($_POST['lastName']) ? $_POST['lastName'] : ''; 
    $email = isset($_POST['email']) ? $_POST['email'] : ''; 
    $mobile = isset($_POST['mobile']) ? $_POST['mobile'] : ''; 
    $locations = isset($_POST['locations_list']) ? $_POST['locations_list'] : ''; 
    $position = isset($_POST['position']) ? $_POST['position'] : ''; 
    $message = isset($_POST['message']) ? $_POST['message'] : ''; 
     if(! empty($_FILES)){ 
      $file=$_FILES['file']; 
      $attachment_id = upload_user_file($file); 
     } 

if ($_FILES["file"]["size"] > 1048576){ 
       echo "Sorry, your file is too large."; 
       $uploadOk = 0; 
     } 
} 

PHP in functions.php

function upload_user_file($file = array()){ 
    require_once(ABSPATH . 'wp-admin/includes/admin.php'); 
     $file_return = wp_handle_upload($file, array('test_form' => false)); 
     if(isset($file_return['error']) || isset($file_return['upload_error_handler'])){ 
      return false; 
     } else { 
      $filename = $file_return['file']; 
      $attachment = array(
       'post_mime_type' => $file_return['type'], 
       'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)), 
       'post_content' => '', 
       'post_status' => 'inherit', 
       'guid' => $file_return['url'] 
     ); 

      $attachment_id = wp_insert_attachment($attachment, $file_return['url']); 

      require_once(ABSPATH . 'wp-admin/includes/file.php'); 
      $attachment_data = wp_generate_attachment_metadata($attachment_id, $filename); 
      wp_update_attachment_metadata($attachment_id, $attachment_data); 

      if(0 < intval($attachment_id)){ 
      return $attachment_id; 
      } 
     } 
     return false; 
} 
+0

bekommen Dies beweisen kann hilfreich sein: http://stackoverflow.com/questions/4328947/limit-file-format-when-using-input-type -file –

+0

Ich möchte nicht die Client-Seite verwenden, um den Dateityp zu begrenzen – User014019

Antwort

1

einfach indem Sie die Datei MIME-Typ und Größe der Datei überprüft, die das Hochladen ist, können Sie und beschränken die Größe basierend auf Dateityp

To check the file type you refer this

To check the file size before uploading

, wenn Sie es googeln können Sie mehr Lösungen

+0

ich habe versucht, das Array zu ändern ''post_mime_type' => $ file_return ['type']' in diese ''post_mime_type' => 'application/msword, vnd.openxmlformats-officedocument.wordprocessingml.document, pdf'' aber immer noch die img hochladen – User014019

+0

[Überprüfen Sie die Antwort] (http://stackoverflow.com/questions/9639610/only-allow-certain-files-types- während eines Uploads hinzuzufügen? answertab = active # tab-top) REF https://codex.wordpress.org/Function_Reference/wp_handle_upload –

+0

siehe meinen aktualisierten Post. In Bezug auf die Dateigröße zu begrenzen – User014019

Verwandte Themen