Це працює, якщо файл html локальний (на моєму диску C), але не якщо файл html знаходиться на сервері, а файл зображення локальний. Чому так?
Будь-які можливі обхідні шляхи?
Це працює, якщо файл html локальний (на моєму диску C), але не якщо файл html знаходиться на сервері, а файл зображення локальний. Чому так?
Будь-які можливі обхідні шляхи?
src=""
Відповіді:
Це була б уразливість системи безпеки, якби клієнт міг запитувати файли локальної файлової системи, а потім використовувати JavaScript, щоб з’ясувати, що в них.
Єдиний спосіб обійти це побудувати розширення в браузері. Розширення Firefox та IE можуть мати доступ до локальних ресурсів. Chrome набагато більш обмежувальний.
чи не слід використовувати "file: // C: /localfile.jpg" замість "C: /localfile.jpg"?
Браузери не мають доступу до локальної файлової системи, якщо ви не отримуєте доступ до локальної HTML-сторінки. Ви повинні десь завантажити зображення. Якщо він знаходиться в тому ж каталозі, що і файл html, ви можете використовувати<img src="localfile.jpg"/>
C:
не є визнаною схемою URI. file://c|/...
Натомість спробуйте .
Чесно кажучи, найпростішим способом було додати на сервер хостинг файлів.
Відкрийте IIS
Додайте віртуальний каталог на веб-сайті за замовчуванням
Додайте відповідні дозволи до папки на диску C: для «СЕТЕВОЇ СЛУЖБИ» та «IIS AppPool \ DefaultAppPool»
Оновити веб-сайт за замовчуванням
І готово. Тепер ви можете переглядати будь-яке зображення в цій папці, перейшовши до http: //yourServerName/whateverYourFolderNameIs/yourImage.jpg і використовувати цю URL-адресу у вашому img src
Сподіваюся, це комусь допомагає
IE 9: Якщо ви хочете, щоб користувач подивився зображення перед тим, як опублікувати його на сервері: Користувач повинен ДОДАТИ веб-сайт до "списку надійних веб-сайтів".
ми можемо використати javascript FileReader (), а це функція readAsDataURL (fileContent), щоб показати файл локального диска / папки. Пов’язати подію зміни із зображенням, а потім викликати функцію showpreview у javascript. Спробуйте це -
<!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
? Ви не можете. Навіть якщо ти думаєш, що можеш, ти не можеш. Перш за все це передбачає середовище Windows.
Я бачу дві можливості для того, що ви намагаєтесь зробити:
Ви хочете, щоб ваша веб-сторінка, що працює на сервері, знайшла файл на комп’ютері, який ви спочатку створили?
Ви хочете, щоб він отримав його з ПК, який переглядає на сторінці?
Варіант 1 просто не має сенсу :)
Варіант 2 був би дірою в безпеці, браузер забороняє веб-сторінці (яка подається з Інтернету) завантажувати вміст на машину переглядача.
Кайл Хадсон сказав вам, що вам потрібно зробити, але це настільки базово, що мені важко повірити, що це все, що ви хочете зробити.
якщо ви використовуєте браузер Google chrome, ви можете використовувати ось так
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
Але якщо ви використовуєте Mozila Firefox, вам потрібно додати "файл" напр.
<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
Якщо ви розгортаєте локальний веб-сайт лише для себе або певних клієнтів, ви можете обійти це, запустивши mklink /D MyImages "C:/MyImages"
в кореневому каталозі веб-сайту як адміністратор в cmd. Тоді в html, do <img src="MyImages/whatever.jpg">
і символічне посилання, встановлене mklink, зв’яже відносне посилання src із посиланням на вашому диску C. Це вирішило це питання для мене, тож може допомогти іншим, хто прийде до цього питання.
(Очевидно, це не буде працювати для загальнодоступних веб-сайтів, оскільки ви не можете легко запускати команди cmd на комп'ютерах людей)
Вам потрібно також завантажити зображення, а потім посилатись на зображення на сервері.
а як щодо того, щоб зображення було обраним користувачем? Використовуйте тег вводу: файл, а потім після того, як вони виділяють зображення, показують його на веб-сторінці клієнта? Це можливо для більшості речей. Зараз я намагаюся змусити його працювати для IE, але, як і у всіх продуктах Microsoft, це вилка кластера ().
Я спробував багато методів і, нарешті, знайшов один із C # і JS Side. Ви не можете надати фізичний шлях атрибуту src, але можете надати рядок base64 як src тегу Img. Давайте розглянемо наведений нижче приклад коду C #.
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
Код C #
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);
}
Сподіваюся, це допоможе
починається з file:///
і закінчується, filename
має працювати:
<img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">