Ini berfungsi jika file html lokal (di drive C saya), tetapi tidak jika file html ada di server dan file gambar lokal. Mengapa demikian?
Ada solusi yang mungkin?
Ini berfungsi jika file html lokal (di drive C saya), tetapi tidak jika file html ada di server dan file gambar lokal. Mengapa demikian?
Ada solusi yang mungkin?
src=""
Jawaban:
Ini akan menjadi kerentanan keamanan jika klien dapat meminta file sistem file lokal dan kemudian menggunakan JavaScript untuk mencari tahu apa yang ada di dalamnya.
Satu-satunya cara untuk mengatasi ini adalah dengan membangun ekstensi di browser. Ekstensi Firefox dan ekstensi IE dapat mengakses sumber daya lokal. Chrome jauh lebih ketat.
bukankah sebaiknya Anda menggunakan "file: // C: /localfile.jpg" daripada "C: /localfile.jpg"?
Browser tidak diizinkan untuk mengakses sistem file lokal kecuali Anda mengakses halaman html lokal. Anda harus mengunggah gambar di suatu tempat. Jika ada di direktori yang sama dengan file html, maka Anda bisa menggunakan<img src="localfile.jpg"/>
C:
bukan skema URI yang dikenali. Coba file://c|/...
saja.
Sejujurnya cara termudah adalah dengan menambahkan file hosting ke server.
Buka IIS
Tambahkan Direktori Virtual di bawah Situs Web Default
Tambahkan izin yang sesuai ke folder di drive C: untuk "NETWORK SERVICE" dan "IIS AppPool \ DefaultAppPool"
Segarkan Situs Web Default
Dan Anda sudah selesai. Anda sekarang dapat menelusuri gambar apa pun di folder itu dengan menavigasi ke http: //yourServerName/whateverYourFolderNameIs/yourImage.jpg dan menggunakan url itu di img src Anda
Semoga ini bisa membantu seseorang
IE 9: Jika Anda ingin pengguna melihat gambar sebelum mempostingnya ke server: Pengguna harus MENAMBAHKAN situs web ke "daftar Situs web tepercaya".
kita dapat menggunakan FileReader () javascript dan fungsi readAsDataURL (fileContent) untuk menampilkan file drive / folder lokal. Ikat peristiwa perubahan ke gambar lalu panggil fungsi showpreview javascript. Coba ini -
<!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>
Pengamatan Newtang tentang aturan keamanan mengesampingkan, bagaimana Anda akan tahu bahwa siapa pun yang melihat halaman Anda akan memiliki gambar yang benar c:\localfile.jpg
? Tidak boleh. Bahkan jika Anda pikir Anda bisa, Anda tidak bisa. Ini mengandaikan lingkungan jendela, untuk satu hal.
Saya melihat dua kemungkinan untuk apa yang Anda coba lakukan:
Anda ingin halaman web Anda, yang berjalan di server, menemukan file di komputer yang awalnya Anda rancang?
Anda ingin mengambilnya dari pc yang sedang dilihat di halaman?
Opsi 1 tidak masuk akal :)
Opsi 2 akan menjadi lubang keamanan, browser melarang halaman web (disajikan dari web) memuat konten di mesin penampil.
Kyle Hudson memberi tahu Anda apa yang perlu Anda lakukan, tetapi itu sangat mendasar sehingga saya merasa sulit untuk percaya hanya ini yang ingin Anda lakukan.
jika Anda menggunakan browser google chrome Anda dapat menggunakan seperti ini
<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
Tetapi jika Anda menggunakan Mozila Firefox, Anda perlu menambahkan "file" ex.
<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px">
Anda juga perlu mengunggah gambar, lalu tautkan ke gambar di server.
bagaimana dengan membuat gambar menjadi sesuatu yang dipilih oleh pengguna? Gunakan tag input: file dan kemudian setelah mereka memilih gambar, tunjukkan di halaman web sisi klien? Itu bisa dilakukan untuk banyak hal. Saat ini saya mencoba membuatnya berfungsi untuk IE, tetapi seperti semua produk Microsoft, ini adalah garpu cluster ().
Jika Anda menerapkan situs web lokal hanya untuk Anda sendiri atau klien tertentu, Anda dapat menyiasatinya dengan menjalankan mklink /D MyImages "C:/MyImages"
direktori root situs web sebagai admin di cmd. Kemudian di html, do <img src="MyImages/whatever.jpg">
dan tautan simbolis yang dibuat oleh mklink akan menghubungkan tautan src relatif dengan tautan di drive C Anda. Ini memecahkan masalah ini untuk saya, jadi ini dapat membantu orang lain yang datang ke pertanyaan ini.
(Jelas ini tidak akan berfungsi untuk situs web publik karena Anda tidak dapat menjalankan perintah cmd di komputer orang dengan mudah)
Saya telah mencoba banyak teknik dan akhirnya menemukan satu di sisi C # dan Sisi JS. Anda tidak dapat memberikan jalur fisik ke atribut src tetapi Anda dapat memberikan string base64 sebagai tag src ke Img. Mari kita lihat contoh kode C # di bawah ini.
<asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
Kode 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);
}
Semoga ini bisa membantu