2011-04-22 19 views
5

Estoy tratando de eliminar una imagen (.jpg) del servidor después de la primera vez que se mostró. Pero el archivo se elimina (desvincula();) antes de mostrarse. Ya he intentado con sleep() pero esto solo demora la carga y después de todo el archivo se elimina antes de mostrarse.PHP :: Cómo se borra un archivo del servidor después de leerlo. Unlink() se ejecuta antes de

+1

Si publica su código relevante, es muy probable que esto sea una solución fácil. Sin ver su código, probablemente no obtendrá ninguna respuesta (útil). –

Respuesta

0

Esto se debe a que todo PHP se ejecuta en la pila antes de representar la salida. Tendrá que configurar una función para marcar el archivo para su eliminación en la carga de la página siguiente.

O puede configurar algunos AJAX para eliminar la imagen después de que el documento se haya cargado.

+0

La salida se procesa _durante la ejecución de PHP. Eso es lo que hacen los scripts PHP. –

6

Puede usar mod_rewrite para redirigir las solicitudes jpg a un script que carga la imagen en la memoria, borra el archivo y luego sirve la imagen. OMI, esta es la solución más simple y fácil. insegura ejemplo a continuación ...

Ejemplo archivo .htaccess:

# Turn on URL rewriting 
RewriteEngine On 

# Rewrite all other URLs to index.php/URL 
RewriteRule .* index.php/$0 [PT] 

index.php

<?php 

$image_file = $_SERVER['PATH_INFO']; 

// clean data, strip current/parent directory to block transversal, etc... 

if (file_exists('images/' . $image_file)) 
{ 
    $image_data = file_get_contents('images/' . $image_file); 

    // determine image mimetype using phps mimetype functions 

    unlink('images/' . $image_file); 

    header('Content-Type: image/jpeg'); 

    echo $image_data; 
} 
+1

No estoy seguro de que el OP desee eliminar _todas las imágenes JPG después de la primera visualización. Además, su '.htaccess' parece completamente ajeno a la pregunta/respuesta? –

+0

@Tomalak, asumí que OP quería una secuencia de comandos de imagen de vista única. El código anterior es solo un ejemplo, tendría que modificarlo para reflejar la ruta correcta de las imágenes, agregar la detección de tipo MIME, etc. Utiliza htaccess para esencialmente solicitudes de proxy a través de un script php. El script devuelve la imagen y la elimina (algunos hosts de imágenes tienen una sola vista, es útil si desea compartir una imagen con una sola persona y no desea que se convierta en un accesorio permanente en Internet). –

+1

Quizás la respuesta debería incluir eso como una advertencia, antes de que regrese quejándose de que hemos borrado todas sus fotos :) –

2
  • Copiar el contenido de imagen del archivo en la memoria;
  • Eliminar el archivo de imagen;
  • Transmita los contenidos originales de la memoria a la salida.

Lo mejor que puedo hacer con la vaguedad, me temo.

Cuestiones relacionadas