[英]how to preload and display image on client side?
在很多類似的問題中,盡管它似乎很常見,但我卻無法真正找到我需要的東西。
我有一個用戶個人資料表格。 因此,用戶可以上傳頭像。 它使用一個通用的“瀏覽...”按鈕,但是此按鈕將在下次提交時通知服務器。
因此,我想檢索本地圖像文件名和目錄路徑以立即顯示所選圖像。
<img src="" id="image_to_display" class="img-responsive" alt=""/>
<form enctype="multipart/form-data" method="post" accept-charset="utf-8" role="form" action="/pros/sites/add">
<input class="form-control" value="POST" type="hidden" name="_method" id="_method" />
<fieldset>
<div class="form-group file">
<input type="file" name="logofile" onchange="loadImg('logofile');" id="logofile">
</div>
.....
</fieldset>
.....
</form>
從document.getElementById(“ logofile”),我只能獲取圖像名稱,而不能獲取路徑名。
怎么做?
從document.getElementById(“ logofile”),我只能獲取圖像名稱,而不能獲取路徑名。
那是因為您正在獲取DOM中的元素,該元素不知道文件在系統上的位置,它只知道現在有一個文件可供DOM查看(它所在的位置現在不相關) )。
您使問題復雜化了。
您無需在用戶系統上尋找圖像即可顯示它。
簡化您的問題,並像其他在stackoverflow上顯示的那樣進行操作。
解決方案:
這個答案: https : //stackoverflow.com/a/27165977/1026898正是您想要的。
image_to_display
的元素。您將其設置為element.src
)設置為以(這是圖片本身)。 使用您的代碼:
<img src="" id="image_to_display" class="img-responsive" alt=""/>
<form enctype="multipart/form-data" method="post" accept-charset="utf-8" role="form" action="/pros/sites/add">
<input class="form-control" value="POST" name="_method" id="_method" />
<fieldset>
<div class="form-group file">
<input type="file" name="logofile" id="logofile" onchange="loadFile(event)">
</div>
.....
</fieldset>
.....
</form>
<script>
var loadFile = function(event) {
var output = document.getElementById('image_to_display');
output.src = URL.createObjectURL(event.target.files[0]);
};
</script>
您將無法獲得路徑名,因為這是一件事的隱私問題,而且由於跨源規則,您也無法將其分配給<img src
。 您需要研究FileReader
使用,盡管它需要相對較新的瀏覽器(Chrome,Firefox,IE 10 ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.