web-dev-qa-db-fra.com

Définir la limite pour le téléchargement multimédia?

Je cherche en ligne et tout ce que je peux voir, c'est comment augmenter la taille du fichier pour le téléchargement multimédia, ce que je sais faire avec php.ini, mais ce que je dois faire est de limiter la taille du fichier pour le téléchargement multimédia uniquement.

Le client et ses associés ont du mal à comprendre: veuillez ne pas télécharger d'images de plus de 1 Mo car votre site sera chargé à jamais.

Ils téléchargent sans cesse des images de plus de 8 Mo. L'ensemble du site prend plus de 30 secondes pour se charger. C'est horrible.

Je pensais donc - s’il est possible de limiter le téléchargement d’images à 1 Mo environ, sans affecter le upload_max_filesize général, ce qui influera sur la possibilité de télécharger des thèmes et des plugins (et je ne veux pas que cela se produise).

Une idée si cela peut être fait?

6
dingo_d

Oui, vous pouvez utiliser le wp_handle_upload_prefilter qui vous permet d’arrêter le processus de téléchargement si une condition spécifique n’est pas remplie.

Dans votre cas, vous pouvez essayer cet extrait de code:

function limit_upload_size( $file ) {

    // Set the desired file size limit
    $file_size_limit = 1024; // 1MB in KB

    // exclude admins
    if ( ! current_user_can( 'manage_options' ) ) {

        $current_size = $file['size'];
        $current_size = $current_size / 1024; //get size in KB

        if ( $current_size > $file_size_limit ) {
            $file['error'] = sprintf( __( 'ERROR: File size limit is %d KB.' ), $file_size_limit );
        }

    }

    return $file;

}
add_filter ( 'wp_handle_upload_prefilter', 'limit_upload_size', 10, 1 );

J'espère que ça aide!

6
Capiedge

Vous pouvez vous connecter à upload_size_limit et définir une taille de fichier maximale:

// Change the upload size to 1MB
add_filter( 'upload_size_limit', 'wpse_228300_change_upload_size' ); 
function wpse_228300_change_upload_size()
{
    return 1000 * 1024;
}
3
Christine Cooper

Pour moi cela fonctionne très bien!

  function my_max_image_size( $file ) {
  $size = $file['size'];
  $size = $size / 1024;
  $type = $file['type'];
  $is_image = strpos( $type, 'image' ) !== false;
  $limit = 750;
  $limit_output = '750kb';
  if ( $is_image && $size > $limit ) {
    $file['error'] = 'Image files must be smaller than ' . $limit_output;
  }
  return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'my_max_image_size' );
0
Krystian Juraszek