এইচটিএমএল ফাইল স্থানীয় (আমার সি ড্রাইভে) থাকলে এটি কাজ করে তবে এইচটিএমএল ফাইলটি কোনও সার্ভারে থাকে এবং চিত্র ফাইলটি স্থানীয় হয় is তা কেন?
কোন সম্ভাব্য কর্মক্ষেত্র?
এইচটিএমএল ফাইল স্থানীয় (আমার সি ড্রাইভে) থাকলে এটি কাজ করে তবে এইচটিএমএল ফাইলটি কোনও সার্ভারে থাকে এবং চিত্র ফাইলটি স্থানীয় হয় is তা কেন?
কোন সম্ভাব্য কর্মক্ষেত্র?
src=""
উত্তর:
এটি ক্লায়েন্ট স্থানীয় ফাইল সিস্টেম ফাইলগুলির জন্য অনুরোধ করতে পারে এবং তার মধ্যে কী আছে তা খুঁজে বের করার জন্য জাভাস্ক্রিপ্ট ব্যবহার করতে পারলে এটি একটি সুরক্ষিত দুর্বলতা হবে।
এটির একমাত্র উপায় ব্রাউজারে একটি এক্সটেনশান তৈরি করা। ফায়ারফক্স এক্সটেনশান এবং আইই এক্সটেনশানগুলি স্থানীয় সংস্থানগুলিতে অ্যাক্সেস করতে পারে। ক্রোম অনেক বেশি বিধিনিষেধযুক্ত।
আপনি কি "সি: /localfile.jpg" এর পরিবর্তে "file: // C: /localfile.jpg" ব্যবহার করবেন না?
আপনি কোনও স্থানীয় এইচটিএমএল পৃষ্ঠায় অ্যাক্সেস না করা থাকলে ব্রাউজারগুলিকে স্থানীয় ফাইল সিস্টেমে অ্যাক্সেসের অনুমতি দেওয়া হয় না। আপনাকে ছবিটি কোথাও আপলোড করতে হবে। এটি যদি এইচটিএমএল ফাইলের মতো একই ডিরেক্টরিতে থাকে তবে আপনি ব্যবহার করতে পারেন<img src="localfile.jpg"/>
C:
কোনও স্বীকৃত ইউআরআই স্কিম নয়। file://c|/...
পরিবর্তে চেষ্টা করুন।
সত্যই সহজতম উপায় ছিল সার্ভারে ফাইল হোস্টিং যুক্ত করা।
আইআইএস খুলুন
ডিফল্ট ওয়েব সাইটের অধীনে একটি ভার্চুয়াল ডিরেক্টরি যুক্ত করুন
সি এর ফোল্ডারে উপযুক্ত অনুমতি যুক্ত করুন: "নেটওয়র্ক সার্ভিস" এবং "আইআইএস অ্যাপপুল \ ডিফল্ট অ্যাপপুল" এর জন্য ড্রাইভ করুন
রিফ্রেশ
এবং তুমি করে ফেলেছ. আপনি এখন এই ফোল্ডারে কোনও চিত্র ব্রাউজ করতে পারেন http: //yourServerName/w যাইহোক আপনার ফোল্ডারনেইমস / ইয়োরআইমেজ.জেপজি এবং আপনার ইমগ এসসিআর-তে সেই ইউআরএল ব্যবহার করতে পারেন
আশা করি এটি কাউকে সাহায্য করবে
আইই 9: আপনি যদি চান যে ব্যবহারকারীর ছবিটি সার্ভারে পোস্ট করার আগে তার দিকে একবার নজর দেওয়া উচিত: ব্যবহারকারীর ওয়েবসাইটটি "বিশ্বাসযোগ্য ওয়েবসাইট তালিকায়" যুক্ত করা উচিত।
আমরা জাভাস্ক্রিপ্টের ফাইলআরডার () ব্যবহার করতে পারি এবং এটি স্থানীয় ড্রাইভ / ফোল্ডার ফাইল দেখানোর জন্য এটিএসডাটা URL (ফাইলসন্টেন্ট) ফাংশনটি ব্যবহার করতে পারে। ইভেন্টটিকে চিত্রে বাঁধুন তারপর জাভাস্ক্রিপ্টের শোভিউ ফাংশনটি কল করুন। এটা চেষ্টা কর -
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;'>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title></title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
function showpreview(e) {
var reader = new FileReader();
reader.onload = function (e) {
$("#previewImage").attr("src", e.target.result);
}
//Imagepath.files[0] is blob type
reader.readAsDataURL(e.files[0]);
}
</script>
</head>
<body >
<div>
<input type="file" name="fileupload" value="fileupload" id="fileupload" onchange='showpreview(this)'>
</div>
<div>
</div>
<div>
<img width="50%" id="previewImage">
</div>
</body>
</html>
সুরক্ষা বিধিগুলি সম্পর্কে নিউটাংয়ের পর্যবেক্ষণটি বাদ দিয়ে আপনি কীভাবে জানতে পারবেন যে আপনার পৃষ্ঠাটি যে প্রত্যেকে দেখেছে তার সঠিক চিত্র থাকবে c:\localfile.jpg
? আপনি পারবেন না। এমনকি আপনি যদি ভাবতে পারেন তবে আপনি পারবেন না। এটি একটি জিনিসের জন্য উইন্ডোজের পরিবেশকে বোঝায়।
আপনি যা করার চেষ্টা করছেন তার দুটি সম্ভাবনা আমি দেখতে পাচ্ছি:
আপনি নিজের ওয়েবপৃষ্ঠাটি একটি সার্ভারে চলমান, কম্পিউটারটিতে যে ফাইলটি তৈরি করেছেন তা সন্ধান করতে চান যা আপনি এটির নকশা করেছেন?
আপনি পৃষ্ঠাটিতে দেখা পিসি থেকে এটি আনতে চান?
বিকল্প 1 কেবল অর্থবোধ করে না :)
বিকল্প 2 একটি সুরক্ষা গর্ত হবে, ব্রাউজার দর্শকের মেশিনে সামগ্রী লোড করা থেকে একটি ওয়েব পৃষ্ঠা (ওয়েব থেকে পরিবেশন করা) নিষিদ্ধ করে।
কাইল হডসন আপনাকে যা করতে হবে তা আপনাকে জানিয়েছিল, তবে এটি এতটাই প্রাথমিক যে আপনি এটি করতে চান তা বিশ্বাস করা আমার পক্ষে কঠিন hard
আপনি যদি গুগল ক্রোম ব্রাউজার ব্যবহার করেন তবে আপনি এটি ব্যবহার করতে পারেন
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
তবে আপনি যদি মজিলা ফায়ারফক্স ব্যবহার করেন তবে আপনাকে "ফাইল" প্রাক্তন যুক্ত করতে হবে।
<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
ছবিটি ব্যবহারকারীর দ্বারা নির্বাচিত কিছু হতে হবে? একটি ইনপুট: ফাইল ট্যাগ ব্যবহার করুন এবং তারপরে তারা চিত্রটি নির্বাচন করার পরে, ক্লায়েন্টের ওয়েবপৃষ্ঠায় এটি দেখান? এটি বেশিরভাগ জিনিসের জন্য কার্যকর। এই মুহুর্তে আমি এটি IE এর জন্য কাজ করার চেষ্টা করছি তবে সমস্ত মাইক্রোসফ্ট পণ্য হিসাবে এটি একটি ক্লাস্টার কাঁটাচামচ ()।
আপনি যদি কেবল নিজের বা নির্দিষ্ট ক্লায়েন্টদের জন্য কোনও স্থানীয় ওয়েবসাইট স্থাপন করছেন, mklink /D MyImages "C:/MyImages"
তবে ওয়েবসাইটের মূল ডিরেক্টরিতে সেন্টিমিডি অ্যাডমিন হিসাবে চালিয়ে আপনি এটি পেতে পারেন । তারপরে এইচটিএমএল-তে, <img src="MyImages/whatever.jpg">
এবং এমকেইলিংক দ্বারা প্রতিষ্ঠিত প্রতীকী লিঙ্কটি আপনার সি ড্রাইভের লিঙ্কের সাথে সম্পর্কিত এসআরসি লিঙ্কটি সংযুক্ত করবে। এটি আমার জন্য এই সমস্যাটি সমাধান করেছে, সুতরাং এটি অন্যদের যারা এই প্রশ্নে আসতে সহায়তা করতে পারে।
(স্পষ্টতই এটি পাবলিক ওয়েবসাইটগুলির জন্য কাজ করবে না যেহেতু আপনি সহজেই মানুষের কম্পিউটারে সিএমডি কমান্ড চালাতে পারবেন না)
আমি অনেক কৌশল চেষ্টা করেছি এবং অবশেষে সি # সাইড এবং জেএস সাইডে একটি পেয়েছি। আপনি src অ্যাট্রিবিউটকে কোনও শারীরিক পাথ দিতে পারবেন না তবে আপনি ইমগ ট্যাগকে একটি src হিসাবে বেস 64 স্ট্রিং দিতে পারেন। নীচে সি # কোড উদাহরণটি দেখে নেওয়া যাক।
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
সি # কোড
if (File.Exists(filepath)
{
byte[] imageArray = System.IO.File.ReadAllBytes(filepath);
string base64ImageRepresentation = Convert.ToBase64String(imageArray);
var val = $"data: image/png; base64,{base64ImageRepresentation}";
imgEvid.Attributes.Add("src", val);
}
আশা করি এটি সাহায্য করবে