Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda a no subir imagen con mas de 500 K en un TcxDBImage (https://www.clubdelphi.com/foros/showthread.php?t=92169)

Javier13 16-08-2017 19:38:31

Ayuda a no subir imagen con mas de 500 K en un TcxDBImage
 
Quiero hacer que si el usuario sube una imagen que pese más de 500 kilobytes no lo deje subirla alguien que me ayude
Estoy utilizando el componente TcxDBImage para subir las imagenes

Casimiro Notevi 16-08-2017 19:40:57

¿Subirla a dónde y desde dónde?

Javier13 16-08-2017 19:46:55

Subirla a la base de datos (SQL) ya puedo subir la imagen pero quiero que el usuario solamente pueda subir imagenes <=500 K
para que no ocupe tanta memoria la base de datos. en pocas palabras solo quiero que si la imagen pesa más de 500 K arroje un msj de que suba otra más chica

Casimiro Notevi 16-08-2017 20:14:08

Pues miras antes lo que mide la imagen y haces lo que estimes oportuno.
Ejemplo: http://www.clubdelphi.com/foros/showthread.php?t=69336

Javier13 16-08-2017 21:12:13

A un no eh podido resolverlo :/

movorack 16-08-2017 21:34:14

Hola, ¿Y que no haz podido resolver?. ¿Calcular el tamaño para restringir?, ¿Guardarlo en la DB?.

Comparte algo de código para que sea mas fácil prestar una ayuda. aún no me llega el pedido.



ecfisa 16-08-2017 21:36:04

Hola.

¿ Y como selecciona el usuario la imágen que será guardada ?

Saludos :)

Javier13 16-08-2017 21:38:55

Aquí solo estoy subiendo la imagen en el TcxDBImage

pdDoc.InitialDir := GetCurrentdir();
pdDoc.Execute;
try
edDocumento.Picture.LoadFromFile(pdDoc.FileName);
except
end;

Y quiero que antes de que la suba si pesa la imagen más de 500 k le harroje un mensaje para que escoja una que pese menos es todo.
(Calcular el tamaño para restringir movorack)

movorack 16-08-2017 21:45:16

No olvides que para mostrar el código debes encerrarlo en las etiquetas DELPHI

Antes de hacer la carga, debes validar el tamaño del archivo que están seleccionando en el cuadro de dialogo. Si no cumple con tus condiciones no lo dejas cargar.

Javier13 16-08-2017 21:47:07

Como quedaría el código ya validando eso que comentas?

movorack 16-08-2017 21:48:14

Revisa este link

ecfisa 16-08-2017 22:20:14

Cita:

Empezado por Javier13 (Mensaje 520329)
Aquí solo estoy subiendo la imagen en el TcxDBImage

pdDoc.InitialDir := GetCurrentdir();
pdDoc.Execute;
try
edDocumento.Picture.LoadFromFile(pdDoc.FileName);
except
end;

Y quiero que antes de que la suba si pesa la imagen más de 500 k le harroje un mensaje para que escoja una que pese menos es todo.
(Calcular el tamaño para restringir movorack)

Entonces, tomando en cuenta cualquiera de los enlaces que acertadamente te puso Casimiro, solo deberas averiguar el tamaño del archivo cuyo nombre se encuentra en: pdDoc.FileName

Saludos :)

Javier13 17-08-2017 17:50:08

Estoy usando la funtion FileSize

Código Delphi [-]
function FileSize(const aFilename: String): Int64;
var
  info: TWin32FileAttributeData;
begin
  result := -1;

  if NOT GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
    EXIT;

  result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;

Aquí subo el archivo y mando mandar la function
Código Delphi [-]
procedure TForm_Empleados.btnImportarClick(Sender: TObject);
var
  Peso : Int64;
begin
  inherited;
  pdDoc.InitialDir := GetCurrentdir();
  pdDoc.Execute;
  try
    edDocumento.Picture.LoadFromFile(pdDoc.FileName);
  except
  end;
  Peso:=FileSize(pdDoc.FileName);
end;
pero me marca error incompatible types no se si me puedas ayudar a corregir el código

movorack 17-08-2017 18:35:40

Javier13, en el editor del foro hay un botón con el ícono de Delphi. Ese te ayuda a mostrar el código de la forma correcta.

Acá te dejo un ejemplo. La validación la hago antes de cargar la imagen.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  function FileSize(const aFilename: String): Int64;
    var
      info: TWin32FileAttributeData;
  begin
    result := -1;

    if not GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
      Exit;

    result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
  end;
  var
    Dlg : TOpenDialog;
begin
  Dlg := TOpenDialog.Create(Self);
  try
    Dlg.Title := 'Cargar imágen';
    Dlg.Filter := 'Archivos BMP|*.bmp';
    if Dlg.Execute then
    begin
      if FileSize(Dlg.FileName) > 524288 then
      begin
        MessageBox(0, 'El tamaño del archivo debe ser menor a 512 Kb',
          PChar(Self.Caption), MB_ICONSTOP or MB_OK);
        Exit;
      end;

      Image1.Picture.Bitmap.LoadFromFile(Dlg.FileName);
    end;
  finally
    FreeAndNil(Dlg)
  end;
end;

La prueba es en Delphi XE4

Javier13 17-08-2017 19:10:36

Muchas gracias funciono a la perfección :D
Saludos.


La franja horaria es GMT +2. Ahora son las 15:40:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi