Okaro
Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Saludos!!
Bueno, primero ante todo, decir que aunque a continuación ponga código PHP, estoy casi seguro (he dicho casi) de que el problema es de Wodrpess.
El caso es que tengo un formulario para que los usuarios puedan subir imágenes al blog mediante una URL. Cuando se coloca una URL, mediante PHP descargo la imagen, se guarda, y se adjunta a la entrada creada. Todo funciona correctamente... hasta que le pasas una URL con una imagen grande (más de 5-10 megas).
El caso es que me da igual el tamaño que tenga, pues más adelante, internamente se le cambia el tamaño, pero como digo falla con las imágenes de gran tamaño. Ahora mismo lo tengo como sigue:
El caso es que he probado tres métodos para bajar la imagen, por file_get_contents, también con CURL, y también con fopen, tal y como se describen en la siguiente página: PHP Download Image Or File From URL | 4 Rapid Development
Cuando le paso la URL de una imagen grande en los tres casos la imagen se guarda entera y correctamente en el directorio de Uploads de Wordpress, así que lo único que se me ocurre es que la función de Wordpress wp_get_image_editor, por lo que sea, no maneja bien ficheros grandes. A parte de que la función se queda ahí atascada y no llega al final donde se devuelve el ID de la imagen que obtengo mediante jQuery.
En un arrebato de curiosidad, por si acaso he mirado en el servidor y ahí tengo puesto 64 megas de tamaño máximo de subida de fichero y 128MG de memoria, así que supongo que no será por eso, por que como he dicho la imagen se guarda entera y correctamente, simplemente no consigue darle un ID y adjuntarla a una entrada.
A ver si alguien me orienta un poco sobre esto, por que ando muy perdido.
Un Saludo y gracias de anteamo.
Bueno, primero ante todo, decir que aunque a continuación ponga código PHP, estoy casi seguro (he dicho casi) de que el problema es de Wodrpess.
El caso es que tengo un formulario para que los usuarios puedan subir imágenes al blog mediante una URL. Cuando se coloca una URL, mediante PHP descargo la imagen, se guarda, y se adjunta a la entrada creada. Todo funciona correctamente... hasta que le pasas una URL con una imagen grande (más de 5-10 megas).
El caso es que me da igual el tamaño que tenga, pues más adelante, internamente se le cambia el tamaño, pero como digo falla con las imágenes de gran tamaño. Ahora mismo lo tengo como sigue:
PHP:
function attachImage () {
$url = $_REQUEST['urldelaimagen'];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($url);
$filename = basename($url);
if(wp_mkdir_p($upload_dir['path']))
$file = $upload_dir['path'] . '/' . $filename;
else
$file = $upload_dir['basedir'] . '/' . $filename;
file_put_contents($file, $image_data);
$image = wp_get_image_editor( $file ); // Return an implementation that extends WP_Image_Editor
if ( ! is_wp_error( $image ) ) {
$image->resize( 900, 700, false );
$image->save( $file );
}
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file, $postid );
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
wp_send_json($attach_id);
}
add_action( 'wp_ajax_attachImage', 'attachImage' );
El caso es que he probado tres métodos para bajar la imagen, por file_get_contents, también con CURL, y también con fopen, tal y como se describen en la siguiente página: PHP Download Image Or File From URL | 4 Rapid Development
Cuando le paso la URL de una imagen grande en los tres casos la imagen se guarda entera y correctamente en el directorio de Uploads de Wordpress, así que lo único que se me ocurre es que la función de Wordpress wp_get_image_editor, por lo que sea, no maneja bien ficheros grandes. A parte de que la función se queda ahí atascada y no llega al final donde se devuelve el ID de la imagen que obtengo mediante jQuery.
En un arrebato de curiosidad, por si acaso he mirado en el servidor y ahí tengo puesto 64 megas de tamaño máximo de subida de fichero y 128MG de memoria, así que supongo que no será por eso, por que como he dicho la imagen se guarda entera y correctamente, simplemente no consigue darle un ID y adjuntarla a una entrada.
A ver si alguien me orienta un poco sobre esto, por que ando muy perdido.
Un Saludo y gracias de anteamo.