से पहले निष्पादित किया गया है, मैं पहली बार दिखाए जाने के बाद सर्वर से एक चित्र (.jpg) को हटाने की कोशिश कर रहा हूं। लेकिन फ़ाइल को हटा दिया गया है (अनलिंक();) दिखाए जाने से पहले। मैंने पहले ही नींद() से कोशिश की है लेकिन यह केवल लोडिंग में देरी कर रही है और दिखाए जाने से पहले सभी फाइल हटा दी गई है।PHP :: पढ़ने के बाद सर्वर से फ़ाइल को कैसे हटाएं। Unlink() को
उत्तर
ऐसा इसलिए है क्योंकि आउटपुट को प्रस्तुत करने से पहले सभी PHP को स्टैक में निष्पादित किया जाता है। आपको अगले पृष्ठ लोड पर हटाने के लिए फ़ाइल को ध्वजांकित करने के लिए एक फ़ंक्शन सेट अप करने की आवश्यकता होगी।
या दस्तावेज़ लोड होने के बाद चित्र को हटाने के लिए आप कुछ AJAX सेट अप कर सकते हैं।
आउटपुट को _during_ PHP निष्पादन प्रदान किया जाता है। यही PHP स्क्रिप्ट करता है। –
आप जेपीजी अनुरोधों को एक स्क्रिप्ट पर रीडायरेक्ट करने के लिए mod_rewrite का उपयोग कर सकते हैं जो छवि को स्मृति में लोड करता है, फ़ाइल को हटा देता है, फिर छवि को प्रस्तुत करता है। आईएमओ, यह सबसे आसान और आसान समाधान है। नीचे असुरक्षित उदाहरण ...
उदाहरण .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;
}
मुझे विश्वास नहीं है कि ओपी पहली बार देखने के बाद _all_ जेपीजी छवियों को हटाना चाहता है। इसके अतिरिक्त, आपका '। Htaccess' प्रश्न/उत्तर से पूरी तरह से असंबंधित प्रतीत होता है? –
@ टोमालाक, मुझे लगता है कि ओपी एक बार-बार-छवि छवि स्क्रिप्ट चाहता था। उपरोक्त कोड केवल एक उदाहरण है, उसे सही छवि पथ को प्रतिबिंबित करने के लिए इसे संशोधित करने की आवश्यकता होगी, मिमटाइप पहचान आदि जोड़ें। यह एक php स्क्रिप्ट के माध्यम से अनिवार्य रूप से प्रॉक्सी अनुरोधों के लिए htaccess का उपयोग करता है। स्क्रिप्ट छवि को वापस लाती है और इसे हटा देती है (कुछ छवि होस्टों में एक-दृश्य होता है, यह उपयोगी होता है यदि आप एक व्यक्ति के साथ एक छवि साझा करना चाहते हैं, और यह नहीं चाहते कि यह इंटरनेट पर स्थायी स्थिरता बन जाए)। –
शायद उत्तर में एक चेतावनी के रूप में शामिल होना चाहिए, इससे पहले कि वह वापस शिकायत करे कि हमने अपनी सभी तस्वीरें हटा दी हैं :) –
- कॉपी स्मृति में फ़ाइल से चित्र सामग्री;
- छवि फ़ाइल हटाएं;
- स्मृति से आउटपुट तक मूल सामग्री स्ट्रीम करें।
बेस्ट मैं अस्पष्टता के साथ कर सकता हूं, मुझे डर है।
यदि आप अपना प्रासंगिक कोड पोस्ट करते हैं, तो यह संभवतः एक आसान फिक्स है। अपना कोड देखे बिना, आपको शायद कोई भी (उपयोगी) उत्तर नहीं मिलेगा। –