मेरी वेबसाइट /assets/photos/फ़ोल्डर से बहुत सारी तस्वीरें परोस रही है । मैं जावास्क्रिप्ट के साथ उस फ़ोल्डर में फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं?
ActiveXObjectक्लाइंट सिस्टम फाइल सिस्टम का उपयोग करने के लिए। तो मैंने पूछा।
मेरी वेबसाइट /assets/photos/फ़ोल्डर से बहुत सारी तस्वीरें परोस रही है । मैं जावास्क्रिप्ट के साथ उस फ़ोल्डर में फ़ाइलों की सूची कैसे प्राप्त कर सकता हूं?
ActiveXObjectक्लाइंट सिस्टम फाइल सिस्टम का उपयोग करने के लिए। तो मैंने पूछा।
जवाबों:
वर्तमान कोड एक फ़ोल्डर में सभी फ़ाइलों की एक सूची देगा, यह मानते हुए कि यह उस सर्वर की तरफ है जिसे आप सभी फ़ाइलों को सूचीबद्ध करना चाहते हैं:
var fs = require('fs');
var files = fs.readdirSync('/assets/photos/');
नहीं, जावास्क्रिप्ट का फाइल सिस्टम तक पहुंच नहीं है। सर्वर साइड जावास्क्रिप्ट एक पूरी अलग कहानी है, लेकिन मुझे लगता है कि आप इसका मतलब नहीं है।
मैं एक फ़ाइल dir.php लिखता हूं
var files = <?php $out = array();
foreach (glob('file/*.html') as $filename) {
$p = pathinfo($filename);
$out[] = $p['filename'];
}
echo json_encode($out); ?>;
अपनी स्क्रिप्ट में जोड़ें:
<script src='dir.php'></script>
और फ़ाइलों का उपयोग करें [] सरणी
*.*फ़ाइल एक्सटेंशन को संरक्षित करने के लिए स्कैंडिर का उपयोग करें या उपयोग करें,$out = scandir("."); echo json_encode($out);
क्लाइंट साइड फ़ाइलों के लिए, आपको उपयोगकर्ता की स्थानीय निर्देशिका में फ़ाइलों की सूची नहीं मिल सकती है।
यदि उपयोगकर्ता ने अपलोड की गई फ़ाइलें प्रदान की हैं, तो आप उन्हें अपने inputतत्व के माध्यम से एक्सेस कर सकते हैं ।
<input type="file" name="client-file" id="get-files" multiple />
<script>
var inp = document.getElementById("get-files");
// Access and handle the files
for (i = 0; i < inp.files.length; i++) {
let file = inp.files[i];
// do things with file
}
</script>
निर्दिष्ट फ़ोल्डर में फ़ाइल नाम की सूची प्राप्त करने के लिए, आप इसका उपयोग कर सकते हैं:
fs.readdir(directory_path, callback_function)
यह एक सूची लौटाएगा जिसे आप साधारण सूची अनुक्रमण जैसे- file[0],file[1]आदि से पार्स कर सकते हैं ।
मैंने हर फ़ाइल के लिए एक विशेष निर्देशिका में एक अलग मार्ग बनाया। इसलिए, उस रास्ते पर जाने का मतलब उस फाइल को खोलना था।
function getroutes(list){
list.forEach(function(element) {
app.get("/"+ element, function(req, res) {
res.sendFile(__dirname + "/public/extracted/" + element);
});
});
मैंने इस फ़ंक्शन को निर्देशिका में फ़ाइल नाम की सूची को पास करने के लिए बुलाया __dirname/public/extractedऔर इसने प्रत्येक फ़ाइलनाम के लिए एक अलग मार्ग बनाया जिसे मैं सर्वर साइड पर प्रस्तुत करने में सक्षम था।
मैं एक निर्देशिका को पढ़ने और एक डिजिटल फोटो फ्रेम के हिस्से के रूप में छवि दिखाने के लिए फ़ायरफ़ॉक्स 69.0 (उबंटू पर) में निम्नलिखित (छीन-नीचे कोड) का उपयोग करता हूं। पृष्ठ HTML, CSS और जावास्क्रिप्ट में बनाया गया है, और यह उसी मशीन पर स्थित है जहां मैं ब्राउज़र चलाता हूं। चित्र एक ही मशीन पर भी स्थित हैं, इसलिए "बाहर" से कोई भी दृश्य नहीं है।
var directory = <path>;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET', directory, false); // false for synchronous request
xmlHttp.send(null);
var ret = xmlHttp.responseText;
var fileList = ret.split('\n');
for (i = 0; i < fileList.length; i++) {
var fileinfo = fileList[i].split(' ');
if (fileinfo[0] == '201:') {
document.write(fileinfo[1] + "<br>");
document.write('<img src=\"' + directory + fileinfo[1] + '\"/>');
}
}
इसके लिए नीति security.fileuri.strict_origin_policyको अक्षम करना होगा। इसका मतलब है कि यह एक समाधान नहीं हो सकता है जिसका आप उपयोग करना चाहते हैं। मेरे मामले में मैंने इसे ठीक समझा।