當前位置:首頁 » 網頁前端 » 前端圖片如何上傳
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端圖片如何上傳

發布時間: 2023-01-23 08:49:14

⑴ web前端上傳圖片的幾種方法

下面給你介紹3種web前端上傳圖片的方法:

1.表單上傳

最傳統的圖片上傳方式是form表單上傳,使用form表單的input[type=」file」]控制項,打開系統的文件選擇對話框,從而達到選擇文件並上傳的目的。

ajax無刷新上傳

Ajax無刷新上傳的方式,本質上與表單上傳無異,只是把表單里的內容提出來採用ajax提交,並且由前端決定請求結果回傳後的展示結果。

3.各類插件上傳

當上傳的需求要求可預覽、顯示上傳進度、中斷上傳過程、大文件分片上傳等等,這時傳統的表單上傳很難實現這些功能,我們可以藉助現有插件完成。

如網路上傳插件Web Uploader、jQuery圖片預覽插件imgPreview 、拖拽上傳與圖像預覽插件Dropzone.js等等,大家可根據項目實際需求選擇適合的插件。

⑵ 前端上傳文件的幾種方法

1.表單上傳

最傳統的圖片上傳方式是form表單上傳,使用form表單的input[type=」file」]控制項,打開系統的文件選擇對話框,從而達到選擇文件並上傳的目的。

form表單上傳

表單上傳需要注意以下幾點:

(1).提供form表單,method必須是post。

(2).form表單的enctype必須是multipart/form-data。

javascript學習交流群:453833554

enctype 屬性規定在發送到伺服器之前應該如何對表單數據進行編碼。默認地,表單數據會編碼為 "application/x-www-form-urlencoded"。就是說,在發送到伺服器之前,所有字元都會進行編碼。HTML表單如何打包數據文件是由enctype這個屬性決定的。enctype有以下幾種取值:

application/x-www-form-urlencoded:在發送前編碼所有字元(默認)(空格被編碼為』+』,特殊字元被編碼為ASCII十六進制字元)。

multipart/form-data:不對字元編碼。在使用包含文件上傳控制項的表單時,必須使用該值。

text/plain:空格轉換為 「+」 加號,但不對特殊字元編碼。

默認enctype=application/x-www-form-urlencoded,所以表單的內容會按URL規則編碼,然後根據表單的提交方法:

method=』get』 編碼後的表單內容附加在請求連接後,

method=』post』 編碼後的表單內容作為post請求的正文內容。

⑶ 前端如何將圖片上傳至後端

1. 如果是通過form提交的方式 ,後端直接通過前端的name值即可獲得圖片

2.如果沒有通過form提交 ,則可以通過js將上傳的圖片進行base64轉碼,後端再進行解碼即可

⑷ 前端圖片上傳的兩種邏輯分析

    用戶在表單中選擇文件/圖片後即發送請求,後端將文件存入伺服器,返迴文件對應id,用戶提交表單時帶上此id,實現表單與文件的關聯。

    用戶選擇圖片後,前端使用FileReader()對象將其轉換成base64地址,只在前端進行圖片預覽。表單提交時,將base64轉換成file文件,先上傳圖片,再提交表單。 

⑸ 如何在前端用js進行多圖片上傳

    產品提了一個需求,要求在一個html中實現多行多圖片上傳,原型圖如下:

    2.1 :html

        html頁面由前端實現,此處增加<ul><li></li></ul>是為了配合圖片單擊放大圖片功能的實現

        <ul  id="ul_other">

              <li><input type="file" id="file_other" class="file_input" onchange="add_file_image('other')"></li>

        </ul>

    2.2 :js

        var imgSrc_other=[];

        var imgFile_other=[];

        function add_file_image(id) {

            var fileList =document.getElementById("file_"+id).files;// js 獲取文件對象

            if (verificationFile(fileList[0])){

                for(var i =0;i

                    var imgSrcI =getObjectURL(fileList[i]);

                        if (id=="other"){

                            imgSrc_other.push(imgSrcI);

                            if(fileList[i].size/1024 >100) { //大於100kb,進行壓縮上傳

                                 fileResizetoFile(fileList[i],0.6,function(res){

                                  imgFile_other.push(res);

                                })

                            }else{

                                imgFile_other.push(res);

                        }

                    }

                    addNewContent(id);

                }

        }

    //新增圖片

    function addNewContent(obj) {

        //刪除原先

        $("#ul_"+obj).html("");

        //判斷循環新增

        var  text="";

        if (obj=="other"){

           for(var a =0;a < imgSrc_examReportCard.length;a++) {

            text +='<li><input type="file" id="file_other" class="file_input" onchange="add_file_image('other')"></li>';

           }

        }else{

            console.log('臟數據');

        }

        var oldBox ="<li><div class=\"filediv\"><span>+</span>\n" +

        "<input type=\"file\" id=\"file_"+obj+"\"  class=\"file_input\" onchange=\"add_file_image('"+obj+"')\">\n" +

        "</div></li>";

        $("#ul_"+obj).html( text+localText);

    }

    使用formData上傳

    var form =document.getElementById("form_addArchive");//表單id

    var formData =new FormData(form);

    $.each(imgFile_other,function(i, file){

        formData.append('imgFileOther', file);

    });

$.ajax({

    url:url,

    type:'POST',

    async:true,

    cache:false,

    contentType:false,

    processData:false,

    dataType:'json',

    data:formData,

    xhrFields:{

        withCredentials:true

    },

    success:function(data) {

     }

  },

  error:function(XMLHttpRequest, textStatus, errorThrown) {

    }

})

後台使用@RequestParam(value ="imgFileOther", required=false) List<MultipartFile> imgFileOther, 接受

//獲取圖片url以便顯示       

//文件格式驗證

//圖片壓縮

⑹ 前端壓縮並上傳圖片

移動端工單報修的場景中,上傳圖片的功能已經屢見不鮮,但現在手機像素普遍較高,隨手拍一張圖片都6、7M,十幾兆的圖片也並不罕見。如果這些未處理的圖片直接隨數據上傳向伺服器,不但會佔用更多的存儲空間,而且用戶也要等更久的時間,體驗性會差很多,同時更長的傳輸時間,也加大了問題發生的概率,基於這些情況,壓縮圖片並上傳的需求應運而生。

FileReader.readAsDataURL() 該方法會讀取指定的 Blob 或 File 對象。讀取操作完成的時候,readyState 會變成已完成(DONE),並觸發 loadend 事件,同時 result 屬性將包含一個data:URL格式的字元串(base64編碼)以表示所讀取文件的內容。

canvas 用來轉換圖片,將原來的圖片「另存為」新圖片。這里核心方法是cavas的 drawImage 方法來壓縮圖片。

上傳圖片至伺服器,使用 formData 對象生成表單,這里使用axios提交數據

⑺ koa實現簡單圖片上傳

文件上傳請求肯定是post請求,koa中處理post請求參數需要安裝一個中間件

我們處理文件上傳需要在 koaBody 的配置設置 multipart 為 true ,這樣上傳的文件也就是 formdata ,會被 koaBody 處理在 ctx.request.files 中,其他普通的參數通過 ctx.request.body 就可以拿到:

上傳的文件會包含上面那個幾個欄位,其中 path 為臨時路徑,把他們返回,下面會把介面請求結果貼出來,看一下就知道各個欄位的含義。

app中引入並使用:

引入 upload 路由:

這里用了原生的ajax,返回的response是個json字元串

安裝: npm install fs-extra --save

改一下我們的 upload 介面,upload.js:

然後我們重新上傳一下文件

其實上面已經實現了圖片上傳並且保存到我們想要的位置,那怎麼訪問呢,前端怎麼展示呢,這就需要處理靜態資源了。

在app.js中:

這時候我們就可以直接通過圖片的文件名訪問圖片了,我們上面上傳的一張圖片叫 girl.jpg ,這時候直接訪問:

前端加個img標簽展示圖片:

前端上傳後:

如果需要添加其他參數,就在 formdata 中再 append 其他參數

這時候把ctx.request.body返回給前端,看看是什麼樣的:

到這里整個功能就實現了,歡迎大家指教哦。

⑻ 前端圖片壓縮上傳

最近公司有個需求,就是上傳照片時需要先壓縮。
其中上傳原理是用ajax上傳formdata數據,壓縮是採用canvas進行處理。

利用canvas處理Image對象調整像素尺寸,輸出base64格式,再將base64格式轉換為blob對象,再放進formdata對象

上傳文件用formdata,圖像處理用canvas。

⑼ 前端是否選了照片就開始上傳,還是點擊按鈕再上傳

點擊按鈕。
上傳照片的時候,彈出這個框,然後點擊按鈕才能實現上傳,不點按鈕上傳不了。
照片,指用感光紙放在照相底片下曝光後經顯影、定影而成的人或物的圖片。

⑽ 前端文件上傳多種方式

   前端上傳文件【包含圖片、視頻等資源文件】是相當常見的場景,作為一名前端開發人員你會遇到後端接收文件的多種方式,以及前端不同場景下的生成的不同文件上傳格式。

   1、表單上傳方式【最場景、最簡單的方式】

上面的是挺簡單的,but 刷新了,這個體驗大多數場景中讓人接受不了,最簡單的處理方式設置submit 返回 false;

   2、表單升級版 【formData】
   有些場景中我們不一樣會使用form,或者說不想用,那麼formData就是一個很好的選擇了,首先刷新問題是肯定沒有了,而且看上逼格更高。

   3、formData 上傳 blob 圖片

   4、formData 上傳 base64 圖片; // 一般是把base64轉blob在上傳

   其他方式歡迎留言探討, 上面大部分寫法是直接用vue的方式,其實都差不多哈。