2012-02-01 15 views
13

मैं पीएचपी स्क्रिप्ट में एक सादा पाठ फ़ाइल का उपयोग कर रहा हूं। क्या पीएचपी स्क्रिप्ट में फ़ाइल को स्थानीय रूप से सहेजे बिना संसाधित करने का कोई तरीका है? हर जगह मैं बस एक फ़ाइल अपलोड और इसे सहेजता देखता हूं। मुझे बस फ़ाइल के कुछ नाम खींचने की जरूरत है और इसके साथ किया जाना चाहिए। मेरे पास सबकुछ काम कर रहा है यदि मैं फ़ाइल की स्थानीय प्रतिलिपि का उपयोग करता हूं, इसलिए इसे सहेज रहा हूं, फिर इसे हटा रहा हूं। मैं बस सोच रहा था कि क्या एक प्रतिलिपि बचाने और सीधे उस जानकारी को प्राप्त करने का कोई तरीका था।PHP फ़ाइल पोस्ट बिना सहेजे गए अपलोड

हम यहां फ़ाइल अपलोड करते हैं।

<html> 
<body> 
    <form action="test.php" method="post" enctype="multipart/form-data"> 
     <label for="file">Filename:</label><input type="file" name="file" id="file" /> <br /> 
     <input type="submit" name="submit" value="Submit" /> 
    </form> 
</body> 
</html> 

और स्थानीय रूप से सहेजा फ़ाइल की एक प्रतिलिपि के साथ काम कर लिपि में, मैं बस का उपयोग

$file = fopen($_FILES['file']['name'], "r"); 

उत्तर

14

आमतौर पर आप इसे द्वारा

$contents= file_get_contents($_FILES['file']['tmp_name']); 

पढ़ सकता है क्या आप वाकई अपलोड किस प्रकार का था, की जांच नहीं कर रहे हैं: निम्नलिखित कोड देखें रीयूस्ट विधि

if(strtolower($_SERVER['REQUEST_METHOD'])=='post') 
    $contents= file_get_contents($_FILES['file']['tmp_name']); 
elseif(strtolower($_SERVER['REQUEST_METHOD'])=='put') 
    $contents= file_get_contents("php://input"); 
else 
    $contents=""; 
+3

स्थिति समान दिखती है, मुझे लगता है कि दूसरी बार आप स्ट्रेटोवर ($ _ सर्वर ['REQUEST_METHOD']) == 'put' – netadictos

0

कोई यह afaik पढ़ने के लिए बचाया जा करने के लिए होता है, मेरे सामान्य रूप से नियमित रूप में ही है आपका, अपलोड, पढ़ और हटाएं।

0

आप केवल $_FILES["file"]["tmp_name"] का उपयोग कर सकते हैं जो अपलोड किया गया अस्थायी फ़ाइल होगी। एक बार आपकी स्क्रिप्ट चलने के बाद, PHP को स्वयं के बाद भी साफ करना चाहिए और temp फ़ाइल को हटा देना चाहिए।

3

जब फॉर्म सबमिट किया गया है, तो $_FILES['input_name']['tmp_name'] संपत्ति देखें। यह आपकी फ़ाइल का अस्थायी /tmp सिस्टम पथ में सहेजा गया पथ है। आप file_get_contents() का उपयोग करके नाम पढ़ना जारी रख सकते हैं और फिर फ़ाइल को भूल सकते हैं। सिस्टम इसे हटाने का ख्याल रखेगा।


बस अन्य उत्तर से बाहर खड़े करने के लिए, आप सैद्धांतिक रूप से भी जावास्क्रिप्ट का उपयोग कर इसे अपलोड करने के बिना फ़ाइल पढ़ सकता है, http://www.html5rocks.com/en/tutorials/file/dndfiles/ देखते हैं। फिर AJAX अनुरोध के हिस्से के रूप में केवल आवश्यक डेटा सबमिट करें।

1

जब आप फ़ाइल अपलोड करते हैं, तो इसे स्थानीय रूप से सहेजने से पहले इसे एक अस्थायी फ़ाइल में सहेजा जाता है। जिनमें से स्थान के आधार पर पहुँचा जा सकता है:

$_FILES['uploadedfile']['tmp_name'] 

के रूप में आप एक ही स्क्रिप्ट है कि POST प्राप्त करता है के भीतर ऐसा करने के लिए आप, फ़ाइल और fopen() अस्थायी फ़ाइल को बचाने के लिए नहीं चुन सकते हैं जब तक।

3

इस मामले में पढ़ने से पहले फ़ाइल को कहीं भी सहेजा जाना है अस्थायी निर्देशिका है; आप अस्थायी निर्देशिका से फ़ाइल की सामग्री प्राप्त कर सकते हैं, फिर यदि आपको वास्तव में हटाने की आवश्यकता है। अपने पाठ फ़ाइल (यह मानते हुए कि आकार बहुत बड़ा नहीं है) यदि

$file = file_get_contents($_FILES["ufiley"]["tmp_name"]); 

unlink($_FILES["ufiley"]["tmp_name"]); 

//contents would be stored in $file 
+4

स्क्रिप्ट समाप्त होने पर PHP को स्वचालित रूप से अनलंक() 'अस्थायी फ़ाइल को अनलिंक करना आवश्यक नहीं है क्योंकि PHP स्वचालित रूप से ऐसा करता है। –

+0

@ जॉर्ज हाँ यह करता है। यह स्पष्टता उद्देश्यों के लिए है। – Mob

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