首頁  >  文章  >  web前端  >  JavaScript實作txt檔案的上傳並預覽功能

JavaScript實作txt檔案的上傳並預覽功能

小云云
小云云原創
2018-03-28 09:07:592776瀏覽

今天做專案剛好碰到這個紀錄一下。因為是簡單的txt文件,只涉及文本,如果需要涉及圖片預覽就需要使用papaparse和jschardet,此處不多敘述。

 表單按鈕使用js的onchange=”uploadfile()” 事件,function函數程式碼如下:


//此处为txt文件上传预览的js代码
function uploadfile(){
 var file=$("#txt")[0].files[0];
 //判断上传文件是不是txt格式,判断后缀是不是.txt
 if(file.name.substr(-4).toLocaleLowerCase() != '.txt'){
  alert("请上传格式为txt的文件!");
  windows.location="test.jsp";//重新定位到上传txt文件页面
 }
 else//如果上传文件是txt文件,则显示文件的预览
 {
  var reader=new FileReader;
  reader.readAsText(file,'gb2312');
  //reader.readAsDataURL(file);
  reader.onload=function(evt){
   var data=evt.target.result;  
   $('#textarea_id').val(data); 
  } 
 } 
}

效果如下:

JavaScript實作txt檔案的上傳並預覽功能
JavaScript實作txt檔案的上傳並預覽功能
JavaScript實作txt檔案的上傳並預覽功能

提示上傳檔案類型錯誤

補充:

js 上傳檔案預覽

1. FILE API

   html5提供了FIle和FileReader兩個方法,可以讀取文件資訊並讀取文件。

2. example


<html>
<body>
<p id="test-image-preview" 
style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat: no-repeat; background-position: center center;"> </p>
<br/>
<p id="test-file-info"></p>
<br/>
<input type="file" id="test-image-file">
<script type="text/javascript">
var
 fileInput = document.getElementById(&#39;test-image-file&#39;),
 info = document.getElementById(&#39;test-file-info&#39;),
 preview = document.getElementById(&#39;test-image-preview&#39;);
// 监听change事件:
fileInput.addEventListener(&#39;change&#39;, function () {
 // 清除背景图片:
 preview.style.backgroundImage = &#39;&#39;;
 // 检查文件是否选择:
 if (!fileInput.value) {
  info.innerHTML = &#39;没有选择文件&#39;;
  return;
 }
 // 获取File引用:
 var file = fileInput.files[0];
 // 获取File信息:
 info.innerHTML = &#39;文件: &#39; + file.name + &#39;<br>&#39; +
      &#39;大小: &#39; + file.size + &#39;<br>&#39; +
      &#39;修改: &#39; + file.lastModifiedDate;
 if (file.type !== &#39;image/jpeg&#39; && file.type !== &#39;image/png&#39; && file.type !== &#39;image/gif&#39;) {
  alert(&#39;不是有效的图片文件!&#39;);
  return;
 }
 // 读取文件:
 var reader = new FileReader();
 reader.onload = function(e) {
  var
   data = e.target.result; // &#39;data:image/jpeg;base64,/9j/4AAQSk...(base64编码)...&#39;   
  preview.style.backgroundImage = &#39;url(&#39; + data + &#39;)&#39;;
 };
 // 以DataURL的形式读取文件:
 reader.readAsDataURL(file);
});
</script>
</body>
</html>

  以DataURL的形式讀取到的檔案是字串,類似於data:image /jpeg;base64,/9j/4AAQSk...(base64編碼)...,

#常用於設定影像。如果需要伺服器端處理,把字串base64,後面的字元傳送給伺服器並用Base64解碼就可以得到原始檔案的二進位內容。

3. 解釋

上面的程式碼也示範了JavaScript的一個重要的特性就是單執行緒執行模式。在JavaScript中,瀏覽器的JavaScript執行引擎在執行JavaScript程式碼時,總是以單執行緒模式執行,也就是說,任何時候,JavaScript程式碼都不可能同時有多於1個執行緒在執行。

你可能會問,單執行緒模式執行的JavaScript,如何處理多工?

在JavaScript中,執行多任務其實都是非同步調用,例如上面的程式碼:

#reader.readAsDataURL(file);

##就會發起一個非同步操作來讀取文件內容。因為是非同步操作,所以我們在JavaScript程式碼中就不知道什麼時候操作結束,因此需要先設定一個回呼函數:


reader.onload = function(e) {
 // 当文件读取完成后,自动调用此函数:
};

當檔案讀取完成後, JavaScript引擎將自動呼叫我們設定的回呼函數。執行回調函數時,檔案已經讀取完畢,所以我們可以在回呼函數內部安全地取得檔案內容。

相關推薦:

js實作txt檔案的上傳並預覽的程式碼

PHP逐行讀取txt檔案的方法實例

php實作加入內容到txt檔案中的範例

#

以上是JavaScript實作txt檔案的上傳並預覽功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn