<input type="file" id="file-id" name="file_name" onchange="theimage();">
Ini adalah tombol unggah saya.
<input type="text" name="file_path" id="file-path">
Ini adalah bidang teks tempat saya harus menunjukkan path lengkap file.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Ini adalah JavaScript yang menyelesaikan masalah saya. Namun dalam nilai waspada memberi saya
C:\fakepath\test.csv
dan Mozilla memberi saya:
test.csv
Tapi saya ingin path file yang sepenuhnya memenuhi syarat lokal . Bagaimana cara mengatasi masalah ini?
Jika ini karena masalah keamanan browser, lalu apa cara alternatif untuk melakukan ini?
javascript
html
dom
file-upload
e_maxm
sumber
sumber
browser security issue
~ jika ini diterapkan di browser (memang demikian) maka sangat tidak mungkin Anda bisa mengelakC:\fakepath
, jadi sekarang semua orang tahu struktur direktori saya.Jawaban:
Beberapa browser memiliki fitur keamanan yang mencegah JavaScript dari mengetahui jalur lengkap lokal file Anda. Masuk akal - sebagai klien, Anda tidak ingin server mengetahui sistem file mesin lokal Anda. Alangkah baiknya jika semua browser melakukan ini.
sumber
c:\users\myname\desktop
atau/Users/myname/Desktop/
atau apa pun). Itu bukan sesuatu yang diketahui oleh server web.Menggunakan
dari pada
sumber
Saya menggunakan objek FileReader pada
onchange
acara input untuk jenis file input Anda! Contoh ini menggunakan fungsi readAsDataURL dan untuk alasan itu Anda harus memiliki tag. Objek FileReader juga telah membacaAsBinaryString untuk mendapatkan data biner, yang nantinya dapat digunakan untuk membuat file yang sama di server AndaContoh:
sumber
Jika Anda pergi ke Internet Explorer, Tools, Opsi Internet, Keamanan, Custom, cari "Sertakan jalur direktori lokal Saat mengunggah file ke server" (ini agak jauh) dan klik "Aktifkan". Ini akan bekerja
sumber
Saya senang bahwa browser peduli untuk menyelamatkan kami dari skrip yang mengganggu dan sejenisnya. Saya tidak senang dengan IE memasukkan sesuatu ke dalam peramban yang membuat perbaikan gaya sederhana seperti serangan balik!
Saya telah menggunakan <span> untuk mewakili input file sehingga saya bisa menerapkan style yang sesuai pada <div> daripada <input> (sekali lagi, karena IE). Sekarang karena ini IE ingin menunjukkan kepada Pengguna jalan dengan nilai yang hanya dijamin untuk membuat mereka waspada dan paling tidak khawatir (jika tidak benar-benar membuat mereka takut?!) ... LEBIH IE-CRAP!
Bagaimanapun, terima kasih kepada mereka yang memposting penjelasan di sini: Keamanan Browser IE: Menambahkan "fakepath" ke path file dalam input [type = "file"] , saya telah mengumpulkan fixer kecil-atas ...
Kode di bawah ini melakukan dua hal - itu memperbaiki bug IE8 lte di mana peristiwa onChange tidak menyala sampai bidang unggah onBlur dan memperbarui elemen dengan filepath dibersihkan yang tidak akan menakuti Pengguna.
sumber
Saya menemukan masalah yang sama. Di IE8 itu bisa diatasi dengan membuat input tersembunyi setelah kontrol input file. Isi ini dengan nilai saudara sebelumnya. Di IE9 ini telah diperbaiki juga.
Alasan saya ingin mengetahui jalur lengkapnya adalah membuat pratinjau gambar javascript sebelum diunggah. Sekarang saya harus mengunggah file untuk membuat pratinjau gambar yang dipilih.
sumber
Jika Anda benar-benar perlu mengirim path lengkap dari file uploded, maka Anda mungkin harus menggunakan sesuatu seperti applet java yang ditandatangani karena tidak ada cara untuk mendapatkan informasi ini jika browser tidak mengirimkannya.
sumber
tampaknya Anda tidak dapat menemukan path lengkap di localhost Anda oleh js, tetapi Anda dapat menyembunyikan fakepath untuk hanya menampilkan nama file. Gunakan jQuery untuk mendapatkan nama file input file yang dipilih tanpa path
sumber
Gunakan pembaca file:
sumber
Hy di sana, dalam kasus saya saya menggunakan lingkungan pengembangan asp.net, jadi saya ingin mengunggah data tersebut dalam asynchronus ajax request, di [webMethod] Anda tidak dapat menangkap pengunggah file karena itu bukan elemen statis, jadi saya harus membuat pergantian untuk solusi tersebut dengan memperbaiki jalur, daripada mengubah gambar yang diinginkan menjadi byte untuk menyimpannya dalam DB.
Ini adalah fungsi javascript saya, semoga membantu Anda:
di sini hanya untuk pengujian:
sumber
Melengkapi penggunaan jawaban Sardesh Sharma:
Untuk jalur penuh.
sumber
undefined
kepada saya di FireFox 75.0. Apakahpath
sebenarnya ada? Apakah Anda memiliki referensi dokumentasi tentang hal itu?