2011-03-27 17 views
10

मेरे पास एक फॉर्म (HTML, PHP) है जो अंतिम उपयोगकर्ता को अपलोड की गई फ़ाइल (विशेष रूप से .csv) में रिकॉर्ड के साथ डेटाबेस (MySQL) को अद्यतन करने के लिए फ़ाइल अपलोड करने देता है। हालांकि, phpscript में, मैं केवल फ़ाइल नाम प्राप्त कर सकता हूं, न कि विशिष्ट फ़ाइल का पूरा पथ। fopen() इस कारण से विफल रहता है। क्या कोई मुझे बता सकता है कि मैं पूरा रास्ता खोजने पर कैसे काम कर सकता हूं?अपलोड की गई फ़ाइल का पूरा पाथ प्राप्त करना - PHP

एचटीएमएल कोड:

<html> 
<head> 
</head> 
<body> 
<form method="POST" action="upload.php" enctype="multipart/form-data"> 
    <p>File to upload : <input type ="file" name = "UploadFileName"></p><br /> 
    <input type = "submit" name = "Submit" value = "Press THIS to upload"> 
</form> 
</body> 
</html> 

पीएचपी स्क्रिप्ट:

<?php 
    ..... 
...... 
    $handle = fopen($_FILES["UploadFileName"]["name"], "r"); # fopen(test.csv) [function.fopen]: failed to open stream: No such file or directory 
?> 
+0

यह सहायक प्रश्न है। –

उत्तर

25

nameक्लाइंट साइड पर फ़ाइल नाम को दर्शाता है। सर्वर साइड पर (पूर्ण पथ सहित) फ़ाइल नाम पाने के लिए आपको tmp_name उपयोग करने की आवश्यकता:

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3

निम्नलिखित कोड का उपयोग,

$handle = fopen($_FILES["UploadFileName"]["tmp_name"], 'r'); 
3
$target='uploads/'.basename($_FILES['UploadFileName']['name']); 

if(move_uploaded_file($_FILES['UploadFileName']['tmp_name'],$target)) { 

    //Insert into your db 

    $fp = fopen($target, "r"); 
} 
2

मैं इस तरह लिखा था :

$filePath = realpath($_FILES["file"]["tmp_name"]); 

इसने मुझे PHP में अपलोड की गई फ़ाइल का पूरा मार्ग दिया। आप फ़ाइल डाउनलोड में 0 बाइट्स समस्या मिल जाए, तो बस इस

header("Content-Length: ".filesize($filePath)); 

कहाँ $ FilePath सिर्फ संभाल फाइल नहीं दायर करने के लिए निरपेक्ष पथ होना चाहिए की तरह इस सामग्री-लंबाई लाइन को संशोधित।

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