常用圖片文件下載上傳方法

2022-01-02 前端工匠

文末有包郵送書!

本文整理了前端常用的下載文件以及上傳文件的方法。
以vue+element ui+axios為例,不使用el封裝好的上傳組件,這裡自行進行封裝實現,完整demo可以查看【閱讀原文】

上傳文件

以圖片為例,文件上傳可以省略預覽圖片功能

圖片上傳可以使用2種方式:文件流和base64;

1.文件流上傳+預覽:
*  <input type="file" id='imgBlob' @change='changeImgBlob' />
  <el-image style="width: 100px; height: 100px" :src="imgBlobSrc"></el-image>*

// data
imgBlobSrc: ""

// methods
changeImgBlob() {
      let file = document.querySelector("#imgBlob");
      /**
       *圖片預覽
       *更適合PC端,兼容ie7+,主要功能點是window.URL.createObjectURL
       */
      var ua = navigator.userAgent.toLowerCase();
      if (/msie/.test(ua)) {
        this.imgBlobSrc = file.value;
      } else {
        this.imgBlobSrc = window.URL.createObjectURL(file.files[0]);
      }
      //上傳後臺
      const fd = new FormData();
      fd.append("files", file.files[0]);
      fd.append("xxxx", 11111); //其他欄位,根據實際情況來
      axios({
        url: "/yoorUrl", //URL,根據實際情況來
        method: "post",
        headers: { "Content-Type": "multipart/form-data" },
        data: fd
      });
}

瀏覽器network查看


img元素查看src,為blob類型

2.Base64上傳+預覽:
<input type="file" id='imgBase' @change='changeImgBase' />
<el-image style="width: 100px; height: 100px" :src="imgBaseSrc"></el-image>

// data
imgBaseSrc : ""

// methods
    changeImgBase() {
      let that = this;
      let file = document.querySelector("#imgBase");
      /**
      *圖片預覽
      *更適合H5頁面,兼容ie10+,圖片base64顯示,主要功能點是FileReader和readAsDataURL
      */
      if (window.FileReader) {
        var fr = new FileReader();
        fr.onloadend = function (e) {
          that.imgBaseSrc = e.target.result;
          //上傳後臺
          axios({
            url: "/yoorUrl", //URL,根據實際情況來
            method: "post",
            data: {
              files: that.imgBaseSrc
            }
          });
        };
        fr.readAsDataURL(file.files[0]);
      }
    }

瀏覽器network查看

下載文件圖片下載
  <el-image style="width: 100px; height: 100px" :src="downloadImgSrc"></el-image>
  <el-button type="warning" round plain size="mini" @click='downloadImg'>點擊下載</el-button>

注意:這裡需要指定 responseType為blob
//data
 downloadImgSrc:'https://i.picsum.photos/id/452/400/300.jpg?hmac=0-o_NOka_K6sQ_sUD84nxkExoDk3Bc0Qi7Y541CQZEs'
//methods
downloadImg() {
      axios({
        url: this.downloadImgSrc, //URL,根據實際情況來
        method: "get",
        responseType: "blob"
      }).then(function (response) {
        const link = document.createElement("a");
        let blob = new Blob([response.data], { type: response.data.type });
        let url = URL.createObjectURL(blob);
        link.href = url;
        link.download = `實際需要的文件名.${response.data.type.split('/')[1]}`;
        link.click();
        document.body.removeChild(link);
      });
    }

文件下載(以pdf為例)
  <el-image style="width: 100px; height: 100px" :src="downloadImgSrc"></el-image>
  <el-button type="warning" round plain size="mini" @click='downloadImg'>點擊下載</el-button>

注意:這裡需要指定 responseType為blob
//data
 downloadImgSrc:'https://i.picsum.photos/id/452/400/300.jpg?hmac=0-o_NOka_K6sQ_sUD84nxkExoDk3Bc0Qi7Y541CQZEs'
//methods
downloadImg() {
      axios({
        url: this.downloadImgSrc, //URL,根據實際情況來
        method: "get",
        responseType: "blob"
      }).then(function (response) {
        const link = document.createElement("a");
        let blob = new Blob([response.data], { type: response.data.type });
        let url = URL.createObjectURL(blob);
        link.href = url;
        link.download = `實際需要的文件名.${response.data.type.split('/')[1]}`;
        link.click();
        document.body.removeChild(link);
      });
    }

pdf預覽可以參考如何預覽以及下載pdf文件
小結圖片上傳可以使用2種方式文件流和Base64
圖片下載同理。包郵送書

正值五一佳節,阿浪為大家送上八本《Web前端性能優化》,預祝大家好運!

內容簡介

本書涵蓋了前端優化的方方面面,不只是教給讀者解決具體性能問題的工具手冊,更重要的是幫助讀者構築起一套完整的知識體系。在此基礎上讀者可以做到舉一反三,觸類旁通,從一個性能問題出發能夠提出對整個系統的優化改進策略。雖然前端性能優化是一個老生常談的問題,業界也已經有比較成熟的優化方法,但也需要承認這是一個不斷進行著技術更新和迭代的領域,新技術的出現帶來了新的方法同時也會引入新的問題,本書對這些新技術和新問題都有所涉及。另外說到底前端性能優化是一個工程實踐,所以本書不僅有紮實全面的理論做基礎,同時還包含了大量的實踐案例,充分做到了理論結合實踐。

抽獎方式:

先掃碼添加阿浪的微信(上圖)

回復暗號777獲取小程序抽獎碼,掃碼即可參與

開獎時間: 周二(05/06)中午12:00

05月06號中午12點準時開獎,預祝大家好運!逾期本活動作廢!中獎者如果24小時內未填寫地址,視為自動棄權!

相關焦點

  • 如何將上傳到微雲中的文件/圖片下載到電腦上?
    利用QQ將手機中文件,上傳到微雲中,這樣可以減少手機的內存佔有量,可以讓手機放一些常用的資料,文件和圖片。待到將資料上傳到微雲中,如何將微雲中的文件下載到電腦上?在電腦上,打開QQ圖標,輸入帳號和密碼,成功登錄QQ,如圖1所示。
  • PHP上傳文件和下載
    >在 B/S 程序中文件上傳已經成為一個常用功能。; return false; } //6.移動圖片 if(!/leiding',array('jpg','png'));第 2 章 多文件上傳2.1 不同 name 名稱多文件上傳當需要上傳多個文件的情況,有兩種實現的解決方法:1) 使用不同的表單元素。
  • asp.net+jquery.form實現圖片異步上傳的方法(附jquery.form.js下載)
    這篇文章主要介紹了asp.net+jquery.form實現圖片異步上傳的方法,結合實例形式分析了jquery.form.js前臺異步提交圖片與
  • 文件上傳
    切片上傳文件切片和核心是使用 Blob 對象的 slice 方法首先我先定義單個切片的大小,對之前的邏輯稍作改造,如果文件大小小於一個切片就直接上傳,如果大於一個切片,那麼就走切片上傳的邏輯邏輯呢,大體是這樣的,拿到文件之後呢,我們先在這裡計算一下這個文件的hash值,然後再執行cutBlob切片這個方法,這個cutBlob無非就是創建了一個數組,然後通過file.slice
  • 騰訊企業郵箱微盤如何上傳文件?可以批量下載文件嗎?
    微盤可以幫助我們保存文件,做好文件分類,讓我們的工作更高效便捷,想要上傳微盤文件。我們可以登錄郵箱帳號,在郵箱首頁左側欄點擊【微盤】-打開【我的文件】-點擊任意一個共享空間-點擊右上角【上傳】按鈕—選擇需要上傳的文件,即可完成文件上傳。
  • UI自動化測試上傳文件方法都在這裡了!
    實施UI自動化測試的時候,經常會遇見上傳文件的操作,那麼對於上傳文件你知道幾種方法呢?今天我們就總結一下幾種常用的上傳文件的方法,並分析一下每個方法的優點和缺點以及哪種方法效率,穩定性更高。input標籤來定義的上傳文件按鈕,所以就無法使用send_keys方法上傳,這也是這個方法的限制第二種方法:是AutoIT工具,它是一個類似腳本語言的軟體,利用此軟體我們可以方便的實現模擬鍵盤、滑鼠、窗口等操作,實現自動化安裝官網地址:https://www.autoitscript.com
  • php使用ftp實現文件上傳與下載功能
    (商務合作聯繫QQ號:2230304070)http://www.jb51.net/article/120024.htm本文實例為大家分享了php ftp文件上傳與下載的具體代碼,供大家參考,具體內容如下ftp文件上傳
  • Selenium Webdriver上傳文件,別傻傻的分不清得3種方法
    上載文件後顯示一條消息,確認文件是否已成功上載。還有更多此類文件上傳的自動化方法。本教程涵蓋的主題包括HTML中的文件上傳,Selenium中處理文件上傳的方法(其中包括以下方法:使用sendKeys,然後使用AutoIT和Robot類)。
  • Android NDK 開發 — 從 Assets 文件夾加載圖片並上傳紋理
    在 OpenGL 開發中,我們要渲染一張圖片,通常先是得到一張圖片對應的 Bitmap ,然後將該 Bitmap 作為紋理上傳到 OpenGL 中。在 Android 中有封裝好的 GLUtils 類的 texImage2D 方法供我們調用。
  • 壓縮gif圖片的常用方法全在這裡!
    今天小編就四個方面詳盡地寫一份關於「壓縮GIF圖片方法」的匯總,僅供參考,歡迎交流學習。1、 打開PS,在「文件」菜單下點擊「導入」下選擇「視頻幀到圖層」   2、 在「載入」窗口中,找到要修改的gif文件,點擊打開、確定gif素材下載網站
  • 如何利用IPFS上傳和下載文件?一學就會,不學後悔系列
    IPFS,星際文件系統,作為分布式的web,是一種內容可尋址、版本化、點對點的超媒體存儲傳輸協議,目標是取代http。那麼IPFS怎麼用?最基本的操作,比如如何利用IPFS上傳和下載文件?今天就和引擎一起來學習吧!
  • JavaScript文件上傳詳解
    demo4 moxie文件上傳,進度提示 demo5 使用plupload實現了圖片上傳demo6 斷點續傳 demo7 plupload ui widget的示例 本教程包含7個 demo ,它們循序漸進、由淺入深地講解文件上傳。
  • 百度圖片上傳圖片方法 百度圖片如何上傳圖片
    百度圖片是一款非常不錯的圖片管理軟體,小夥伴們通過百度圖片可以搜索各種圖片資源同時也能夠上傳自己擁有的各種圖片,那麼百度圖片裡面究竟應該怎麼上傳圖片呢?下面小編就給大家介紹一下百度圖片上傳圖片方法,希望能夠幫助到大家。
  • S7-200 SMART編程軟體程序的上傳與下載方法
    安裝方法安裝過程安裝包下載完成後,滑鼠右鍵點擊解壓縮,然後找到文件夾裡面的setup.exe,雙擊。這裡說一下注意事項,如果電腦裡面存在其他的版本編程軟體,比如說是V2.2,V2.3等,在雙擊setup.exe後執行的是卸載工作,只有把之前版本的軟體卸載完成之後,再次進入安裝包,選擇setup.exe雙擊,才開始進行新版本的安裝。
  • 基於Spring Boot 2.2.6實現Rest風格的文件上傳&下載APIs-附源碼
    Spring Boot 2.0 Restful Style MultipartFile Upload and Download APIs文件上傳與下載在Web應用中是一個比較常見的功能。在本教程中,我將基於Spring 2.2.6版本實現一個基於Restful風格的文件上傳與下載APIs。
  • PHP實現多個文件上傳的簡單方法有哪些?
    本篇文章將給大家介紹關於PHP實現多個文件上傳的一些簡單方法。在此知識內容介紹之前,我們在前面的文章【PHP文件上傳方法詳解及其信息解析】中已經為大家詳細介紹了php實現單個文件上傳的具體方法,那麼這篇文章和今天要介紹的知識點是有關聯的,需要的朋友可以先參考學習下。
  • PicGo - 圖片上傳與管理工具
    PicGoPicGo 是一款開源跨平臺的免費圖片上傳工具以及圖床相冊管理軟體,它能幫你快速地將圖片上傳到微博、又拍雲、阿里雲 OSS、騰訊雲 COS、七牛、GitHub、sm.ms、Imgur 等常見的免費圖床網站或雲存儲服務上,並自動複製圖片的連結到剪貼板裡,使用上非常高效便捷…
  • 圖片太大無法上傳?教你四種壓縮方法,效率提升90%!
    使用圖片已經變成了一件很平常的事情,但是在使用的過程中也遇到了一些問題。比如我們在報名教師資格證考試的時候需要上傳證件照,對圖片的大小是有限制的,我們需要壓縮圖片。還有我們在網上下載圖片素材時,也會為了節省空間對圖片進行壓縮。所以,今天我就來和大家分享幾種圖片壓縮的方法,大家可以自行選擇自己喜歡的方法。
  • 微信圖片和文件怎麼防止過期 已被清理解決方法
    微信不僅是我們重要的通信工具,日常我們也會通過微信來傳遞文件等。但如果你沒有及時下載保存,當你隔一段時間再次打開查看,你會發現該文件出現過期提示無法打開。  有些時候,你還能從同時登錄的桌面端中找回這些文件,但當你只有手機在線的時候,要獲得這些文件的最直接方法可能也就只有喊對方重新發一遍了。
  • PHP-文件上傳和下載「程式設計師培養之路第三十八天」
    > array (size=5) 'name' => string 'home.html' (length=21) //上傳文件的名稱 'type' => string 'text/html' (length=9) //文件類型(常見文件都可以上傳) 'tmp_name