This topic is locked

Change file name and save file size in field

3/12/2021 6:08:59 AM
PHPRunner General questions
A
alfonso authorDevClub member

Hello. I have a file field to save pdf files. In Before Add event I want to change original name of file by friendly name deleting ñ, á, é,....

I want also to save size of file in bytes into another field calles file_size.

¿Any idea? Thanks
For example, I can use this function to save as a slug title of news:

$separador = '-';//ejemplo utilizado con guión medio

$originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßà áâãäåæçèéêëìíîïðñòóôõöøùúûýý';

$modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyy';
//Quitamos todos los posibles acentos

$url = strtr(utf8_decode($values['title']), utf8_decode($originales), $modificadas);
//Convertimos la cadena a minusculas

$url = utf8_encode(strtolower($url));
//Quitamos los saltos de linea y cuanquier caracter especial

$buscar = array(' ', '&', '\r\n', '\n', '+', '"', '"');

$url = str_replace ($buscar, $separador, $url);

$buscar = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');

$reemplazar = array('', $separador, '');

$url = preg_replace ($buscar, $reemplazar, $url);
$values['slug']=$url;
return true;

A
alfonso authorDevClub member 3/14/2021

I try to get file size with:

$fichero = 'https://mydomain.com/files/'.$values['filename';];

$size_of_file = filesize($fichero);
$values['slug']=filesize($fichero);

$values['size']=$size_of_file;

But I get an empty value

fhumanes 3/14/2021

Hola:
No sé exactmanete qué es lo que te motiva a todos esos cambios.
Si utilizas la funcionalidad de gestinar los ficheros en "filesystem" (que para mí es lo mejor), PHPRunner te permite acceder a toda la información y puedes cambiar y adecuarla a lo que tú necesites.
Mira esta documentación: https://xlinesoft.com/phprunner/docs/rename_uploaded_file.htm
Si no es exactmente lo que necesitas, dímelo y te ayudo a lo que necesites.
Un saludo,

fernando

A
alfonso authorDevClub member 3/14/2021

Gracias. Lo que veo en el enlace es para un array de archivos. Yo tengo un campo llamado "archivo", por ejemplo, del tipo file. En él guardo un fichero pdf o similar,. Lo que quiero es:

  1. Averiguar y guardar su tamaño en otro campo llamado Size, por ejemplo
  2. Cambiar el nombre del archivo quitando ñ y otros caracteres extraños
    Gracias, por cierto, por tu trabajo en tu web

fhumanes 3/15/2021

Hola:
Si el alamacenamiento es en disco, pongamos que tenemos esta tabla:



DROP TABLE IF EXISTS `pruebas`.`imagen_blob`;

CREATE TABLE `pruebas`.`imagen_blob` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`filename` varchar(100) DEFAULT NULL,

`file` tinyblob,

`size` int(10) unsigned DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;


En el evento "Before add|update" podemos poner:



$values['size'] = strlen($values['file']);


Y el código que requieras para cambiar al nombre del fichero que estaría en el campo $values['filename']
No sé, creo que tampoco es esto lo que necesitas.
Saludos,

fernando

A
alfonso authorDevClub member 3/15/2021

No es eso, Fernando. Lo que quiero almacenar en el campo size es el tamaño del fichero en bytes

fhumanes 3/15/2021



No es eso, Fernando. Lo que quiero almacenar en el campo size es el tamaño del fichero en bytes



Hola.

Eso mismo es lo que he dado.

Saludos

A
alfonso authorDevClub member 3/16/2021

Pero parece que tú almacenas el fichero en un tinyblob. Yo lo guardo en una carpeta en el servidor

fhumanes 3/16/2021



Pero parece que tú almacenas el fichero en un tinyblob. Yo lo guardo en una carpeta en el servidor


Ahora me he dado cuenta de mi error. Cuando al principio me dijiste que esta información https://xlinesoft.com/phprunner/docs/rename_uploaded_file.htm no te servía, creí que lo que querías era almacenar el fichero en un campo de la base de datos.
Si lo que deseas es almacenar el campo en el sistema de archivos del server, la indicación que te dí originalmente, para mí, es la buena.
Utilizas Runner y antes "Before Updated |Added" puedes hacer lo que desees con el fichero y la información del fichero. También, puedes configurar el directorio de destino y fijar el nombre que quieres darle en el directorio de destino, configurando el componente.
Si quieres, te hago un ejemplo, pero necesito algo más de información que me podrías dar en mi email fernandohumanes@gmail.com
Siento no haberme enterado desde el principio.
Un saluo,

fernando