2010-06-10 9 views
6

समस्या: मैं PHP के माध्यम से अपने सर्वर पर अपलोड की गई फ़ाइल से मूल फ़ाइल निर्माण समय निर्धारित करना चाहता हूं।PHP: अपलोड की गई फ़ाइल से निर्माण तिथि कैसे प्राप्त करें?

मेरी समझ यह है कि फ़ाइल को क्लाइंट से मेरे सर्वर पर अस्थायी फ़ाइल में कॉपी किया गया है, जिसे $ _FILES var में संदर्भित किया गया है। अस्थायी फ़ाइल का कोई उपयोग नहीं है क्योंकि यह अभी बनाया गया था। क्या कोई तरीका है कि मैं ग्राहकों की मूल फ़ाइल से निर्माण तिथि प्राप्त कर सकता हूं?

धन्यवाद

+0

आप फ़ाइलमैट [http://php.net/manual/en/function.filemtime.php ](http://php.net/manual/en/function.filemtime.php) – Karlisson

उत्तर

10

उस डेटा ब्राउज़र द्वारा नहीं भेजी जाती है, इसलिए वहाँ इसे उपयोग करने में कोई रास्ता नहीं है। फ़ाइल के साथ भेजा गया डेटा mime-type, filename और फ़ाइल सामग्री है।

यदि आप निर्माण की तारीख चाहते हैं, तो आपको या तो इसे प्रदान करने या फ़्लैश या जावा के माध्यम से एक विशेष फ़ाइल अपलोडिंग तंत्र बनाने की आवश्यकता होगी।

+0

धन्यवाद आज़मा सकते हैं! एक तरफ ध्यान दें: क्या यह सामग्री सामग्री के अंदर निर्माण तिथि डालने का एक आम प्रथा है? फ़ाइल एक .w3g है (वॉरक्राफ्ट 3 से जुड़ी एक रीप्ले फ़ाइल)। यदि फ़ाइल निर्माता ने फ़ाइल के अंदर बनाई गई तारीख को रखने का कोई मौका दिया है, तो मैं इसे आगे विच्छेदन करने के लिए कुछ समय समर्पित करूंगा। बस सोच रहा है कि क्या कोई "सामान्य अभ्यास" तरीका है, मुझे इस बात का संकेत देने के लिए कि तारीख वहां है या नहीं। –

3

नहीं, डेटा की स्ट्रीम तकनीकी रूप से एक 'नई' फ़ाइल के लिए, आपके वेबसर्वर को सरल 'प्रतिलिपि' फ़ाइल की बजाय tmp dir में फ़ाइल में लिखी गई है।

+0

मुझे धाराबद्ध होने और प्रतिलिपि बनाने के बीच के अंतर को समझ में नहीं आता है। क्या आप दोनों मामलों में बस एक स्थान से दूसरे स्थान पर बाइट स्थानांतरित नहीं कर रहे हैं? या मेटा डेटा में अंतर है जो स्थानांतरित किया गया है? –

+0

ठीक है, यह समझने के लिए प्रक्रिया को देखने में आपकी सहायता करने के लिए और भी कुछ था। मुद्दा यह है कि बनाया गया/संशोधित डेटा फाइल सिस्टम में सहेजा गया है, वास्तविक फ़ाइल सामग्री नहीं। तो जब ब्राउज़र फ़ाइल भेजता है, तो यह केवल वास्तविक फ़ाइल सामग्री भेजता है और कोई और जानकारी नहीं देता है। फ्लैश वास्तव में सबसे अच्छा विकल्प है यदि आपको इसकी आवश्यकता है, क्योंकि FileReference क्लास आपको उस डेटा तक पहुंच (क्लाइंट साइड) देता है जिसे आप मैन्युअल रूप से अपलोड के साथ भेज सकते हैं। –

+0

हाँ, अब यह सब बहुत स्पष्ट है। आपका बहुत बहुत धन्यवाद। –

0

फ़ाइल के प्रकार के आधार पर, यह संभव हो सकता है: उदाहरण के लिए, एमएस ऑफिस, ओपन ऑफिस, पीडीएफ, और कई अन्य प्रकारों में फ़ाइल गुणों के भीतर "बनाई गई तारीख" मान है .... हालांकि आप फ़ाइल खोलने और प्रासंगिक जानकारी को पढ़ने की आवश्यकता है .... और यह फ़ाइल प्रकार से फ़ाइल प्रकार

0

से भिन्न होगा, आप सृजन के दौरान अपने फ़ाइल नामों के लिए एक दोस्ताना स्वरूपित दिनांक स्ट्रिंग कर सकते हैं और बाद में पुनर्प्राप्त कर सकते हैं।

1

कार्य-आसपास के उत्तरों या एम्बेडेड जानकारी पर निर्भरता के अलावा, यह ध्यान देने योग्य है कि आदर्शीकृत सामान्य उत्तर यह है कि यदि ब्राउज़र/UAs RFC2183 में उपलब्ध होकर मल्टीपार्ट/फॉर्म-डेटा पोस्ट लागू करते हैं।

वे Content-Disposition हेडर के अतिरिक्त पैरामीटर का उपयोग अतिरिक्त मेटा डेटा जैसे सृजन और संशोधन तिथियों में जोड़ने के लिए कर सकते हैं।

मुझे नहीं पता कि इस समय कोई ब्राउज़र क्या करता है या नहीं। लेकिन तकनीकी विनिर्देश वहां है और जहां तक ​​मैं देख सकता हूं कि यह RFC2388 के साथ संगत है।

संबंधित मुद्दे