উত্তর:
JQuery সহ:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
সম্পাদনা করুন:
এখানে jQuery ব্যবহার না করে 404 স্থিতি পরীক্ষা করার কোড is
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
ছোট পরিবর্তন এবং এটি পরিবর্তে স্থিতি HTTP স্থিতি কোড 200 (সাফল্য) জন্য পরীক্ষা করতে পারে।
সম্পাদনা 2: যেহেতু সিঙ্ক এক্সএমএলএইচটিপিআরকোয়েস্টটি অবহিত করা হয়েছে, আপনি এটি ব্যবহারের মতো একটি ইউটিলিটি পদ্ধতি এ্যাসএনসি করতে এটি যুক্ত করতে পারেন:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
একটি অনুরূপ এবং আরও আপ-টু-ডেট পদ্ধতির।
$.get(url)
.done(function() {
// exists code
}).fail(function() {
// not exists code
})
$.ajax
এটি আরও পিছিয়ে সামঞ্জস্য হলে ভাল মনে হচ্ছে, তাই না?
এটি আমার পক্ষে কাজ করে:
function ImageExist(url)
{
var img = new Image();
img.src = url;
return img.height != 0;
}
আমি বিকল্প চিত্র যোগ করতে এই স্ক্রিপ্টটি ব্যবহার করেছি
function imgError()
{
alert('The image could not be loaded.');
}
এইচটিএমএল:
<img src="image.gif" onerror="imgError()" />
এতক্ষণ আপনি একই ডোমেনে ফাইল পরীক্ষা করে যাবেন এটি কাজ করা উচিত:
function fileExists(url) {
if(url){
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.send();
return req.status==200;
} else {
return false;
}
}
দয়া করে নোট করুন, এই উদাহরণটি একটি জিইটি অনুরোধ ব্যবহার করছে, যা শিরোনাম পাওয়ার পাশাপাশি ফাইলটি আবহাওয়ার জন্য যাচাই করতে হবে আপনার সম্পূর্ণ ফাইলটি পায়। যদি ফাইলটি যথেষ্ট বড় হয় তবে এই পদ্ধতিটি সম্পূর্ণ হতে কিছু সময় নিতে পারে।
এটি করার সর্বোত্তম উপায় হ'ল এই লাইনটি পরিবর্তন করা হবে: req.open('GET', url, false);
থেকেreq.open('HEAD', url, false);
async: false
, ফায়ারফক্স সংস্করণ 30.0 এবং তারপরে সিঙ্ক্রোনাস অপারেশন এবং ক্রোমের সাম্প্রতিক / বর্তমান সংস্করণগুলিতে প্রতিকূল ব্যবহারকারীর অভিজ্ঞতার কারণে অবচয় করা হয়েছে। ব্যর্থ / ত্রুটিযুক্ত ব্যবহারের ফলাফলের চেষ্টা করা। async: true
অ্যাসিক্রোনাস অপারেশনের জন্য কলব্যাক ফাংশন সহ ব্যবহার করা উচিত ।
এই প্রশ্নের উত্তর চালানোর চেষ্টা করার সময় আমি ক্রস ডোমেন অনুমতি সংক্রান্ত সমস্যা পেয়েছিলাম তাই আমি এগুলি দিয়েছিলাম:
function UrlExists(url) {
$('<img src="'+ url +'">').load(function() {
return true;
}).bind('error', function() {
return false;
});
}
মনে হচ্ছে এটি দুর্দান্ত কাজ করছে, আশা করি এটি কারও সাহায্য করবে!
এটি কীভাবে ES7 করা যায় তা এখানে আপনি যদি ব্যাবেল ট্রান্সপ্লার বা টাইপস্ক্রিপ্ট 2 ব্যবহার করেন:
async function isUrlFound(url) {
try {
const response = await fetch(url, {
method: 'HEAD',
cache: 'no-cache'
});
return response.status === 200;
} catch(error) {
// console.log(error);
return false;
}
}
তারপরে আপনার অন্যান্য ক্ষেত্রের অভ্যন্তরে async
, আপনি সহজেই ইউআরএল উপস্থিত আছে কিনা তা যাচাই করতে পারেন:
const isValidUrl = await isUrlFound('http://www.example.com/somefile.ext');
console.log(isValidUrl); // true || false
আমি এই স্ক্রিপ্টটি কোনও ফাইল বিদ্যমান কিনা তা পরীক্ষা করতে ব্যবহার করি (এটি ক্রস উত্স সমস্যাটিও পরিচালনা করে):
$.ajax(url, {
method: 'GET',
dataType: 'jsonp'
})
.done(function(response) {
// exists code
}).fail(function(response) {
// doesnt exist
})
নোট করুন যে ফাইলটি যাচাই করা হচ্ছে যখন JSON নেই তখন নিম্নলিখিত বাক্য গঠন ত্রুটি নিক্ষেপ করা হয়।
আনকচড সিনট্যাক্স এরর: অপ্রত্যাশিত টোকেন <
কোনও ফাইল রয়েছে কিনা তা দেখার জন্য একটি অ্যাসিঙ্ক কল হ'ল আরও ভাল পন্থা, কারণ এটি সার্ভারের প্রতিক্রিয়া অপেক্ষা করে ব্যবহারকারীর অভিজ্ঞতা হ্রাস করে না। যদি আপনি .open
তৃতীয় প্যারামিটারটিকে মিথ্যাতে সেট করে কল করে থাকেন (যেমন উপরের অনেক উদাহরণে উদাহরণস্বরূপ http.open('HEAD', url, false);
), এটি একটি সিঙ্ক্রোনাস কল এবং আপনি ব্রাউজার কনসোলে একটি সতর্কতা পান।
আরও ভাল পন্থা হ'ল:
function fetchStatus( address ) {
var client = new XMLHttpRequest();
client.onload = function() {
// in case of network errors this might not give reliable results
returnStatus( this.status );
}
client.open( "HEAD", address, true );
client.send();
}
function returnStatus( status ) {
if ( status === 200 ) {
console.log( 'file exists!' );
}
else {
console.log( 'file does not exist! status: ' + status );
}
}
সূত্র: https://xhr.spec.hatwg.org/
.open
true
client.open("HEAD", address, true);
ক্লায়েন্ট কম্পিউটারের জন্য এটি অর্জন করা যেতে পারে:
try
{
var myObject, f;
myObject = new ActiveXObject("Scripting.FileSystemObject");
f = myObject.GetFile("C:\\img.txt");
f.Move("E:\\jarvis\\Images\\");
}
catch(err)
{
alert("file does not exist")
}
এটি একটি নির্দিষ্ট স্থানে কোনও ফাইল স্থানান্তর করার জন্য আমার প্রোগ্রাম এবং এটি উপস্থিত না থাকলে সতর্কতা দেখায়
ফাইল উপস্থিত আছে কিনা তা পরীক্ষা করতে জাভাস্ক্রিপ্ট ফাংশন:
function doesFileExist(urlToFile)
{
var xhr = new XMLHttpRequest();
xhr.open('HEAD', urlToFile, false);
xhr.send();
if (xhr.status == "404") {
console.log("File doesn't exist");
return false;
} else {
console.log("File exists");
return true;
}
}
প্রথমে ফাংশন তৈরি করে
$.UrlExists = function(url) {
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
নিম্নলিখিত ফাংশন ব্যবহার করার পরে
if($.UrlExists("urlimg")){
foto = "img1.jpg";
}else{
foto = "img2.jpg";
}
$('<img>').attr('src',foto);
এটি স্বীকৃত উত্তরের সাথে অভিযোজন, তবে উত্তর থেকে আমার যা প্রয়োজন তা আমি পেতে পারি নি, এবং এটি কাজ হিসাবে এটি কাজ করে যাচাই করতে হয়েছিল, তাই আমি আমার সমাধানটি এখানে রাখছি।
আমাদের একটি স্থানীয় ফাইলের অস্তিত্ব যাচাই করা দরকার এবং কেবল ফাইল (পিডিএফ) এর অস্তিত্ব থাকলে তা খোলার অনুমতি দিন। যদি আপনি ওয়েবসাইটটির ইউআরএল বাদ দেন, ব্রাউজারটি স্বয়ংক্রিয়ভাবে হোস্টের নামটি নির্ধারণ করে - এটি লোকালহোস্ট এবং সার্ভারে কাজ করে:
$.ajax({
url: 'YourFolderOnWebsite/' + SomeDynamicVariable + '.pdf',
type: 'HEAD',
error: function () {
//file not exists
alert('PDF does not exist');
},
success: function () {
//file exists
window.open('YourFolderOnWebsite/' + SomeDynamicVariable + '.pdf', "_blank", "fullscreen=yes");
}
});
আপনাকে যা করতে হবে তা হ'ল চেকটি করার জন্য সার্ভারকে একটি অনুরোধ প্রেরণ করা, এবং তারপরে ফলাফলটি আপনাকে আপনার কাছে ফেরত পাঠানো।
আপনি কোন ধরনের সার্ভারের সাথে যোগাযোগের চেষ্টা করছেন? অনুরোধটির প্রতিক্রিয়া জানাতে আপনার একটি ছোট্ট পরিষেবা লিখতে হবে।
এটি ওপি-র প্রশ্নের সমাধান করে না, তবে যে কেউ ডাটাবেস থেকে ফলাফলগুলি ফিরিয়ে দিচ্ছে: আমি এখানে একটি সাধারণ পদ্ধতি ব্যবহার করেছি।
যদি ব্যবহারকারী কোনও অবতার আপলোড না করে তবে avatar
ক্ষেত্রটি হবে NULL
, তাই আমি img
ডিরেক্টরি থেকে একটি ডিফল্ট অবতার চিত্র সন্নিবেশ করতাম ।
function getAvatar(avatar) {
if(avatar == null) {
return '/img/avatar.jpg';
} else {
return '/avi/' + avatar;
}
}
তারপর
<img src="' + getAvatar(data.user.avatar) + '" alt="">
আমি এমন একটি ফাংশন চেয়েছিলাম যা একটি বুলিয়ান ফিরিয়ে দেবে, আমি ক্লোজার এবং অ্যাসিঙ্ক্রোনসিটি সম্পর্কিত সমস্যার মুখোমুখি হয়েছিল। আমি এইভাবে সমাধান করেছি:
checkFileExistence= function (file){
result=false;
jQuery.ajaxSetup({async:false});
$.get(file)
.done(function() {
result=true;
})
.fail(function() {
result=false;
})
jQuery.ajaxSetup({async:true});
return(result);
},
OnReadyStateChange
HTTP_STATUS পরীক্ষা করার আগে আপনাকে বাধ্যতামূলক ইভেন্ট হওয়া উচিত ।