最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js獲得相對(duì)路徑文件并上傳到服務(wù)器的方法

 更新時(shí)間:2023年11月02日 10:44:48   作者:嘎嘎油  
由于瀏覽器的安全限制,Javascript無(wú)法直接獲取用戶上傳文件的絕對(duì)路徑。但是我們可以通過(guò)一些技巧來(lái)獲取文件的相對(duì)路徑,這篇文章主要給大家介紹了關(guān)于js獲得相對(duì)路徑文件并上傳到服務(wù)器的相關(guān)資料,需要的朋友可以參考下

如何通過(guò)js獲得相對(duì)路徑文件

已知一個(gè)相對(duì)路徑文件,如何使用js將該文件讀取為File格式,最后上傳到服務(wù)器中呢。

1.最簡(jiǎn)單的解決方案——fetch

代碼

import './index.scss'

// js通過(guò)相對(duì)路徑獲取文件
function FetchGetLocalFile() {
  const fetchLocalFile = (path: string) => {
    // 使用fetch API加載圖片文件
    fetch(path)
      .then(function (response) {
        return response.blob() // 獲取圖片文件的二進(jìn)制數(shù)據(jù)
      })
      .then(function (blob) {
        // 獲取文件名
        let temp: any = path?.split('/')
        let name = temp[temp?.length - 1]
        // 創(chuàng)建File對(duì)象
        let file = new File([blob], name, { type: blob.type })
        console.log('通過(guò)fetch讀取的本地文件', file)
      })
      .catch(function (error) {
        console.log('加載文件失敗:', error)
      })
  }
  return (
    <div>
      <h1 className="h1-color">js通過(guò)相對(duì)路徑獲取文件</h1>
      <button onClick={() => fetchLocalFile('/src/components/fetch-get-local-file/luffy.png')}>獲取文件</button>
    </div>
  )
}

export default FetchGetLocalFile

結(jié)果

2. File

File() 構(gòu)造器創(chuàng)建新的 File 對(duì)象實(shí)例(文件對(duì)象)

語(yǔ)法

const myFile = new File(bits, name[, options]);

參數(shù)

  • bits

    一個(gè)包含ArrayBuffer,ArrayBufferView,Blob,或者 DOMString 對(duì)象的 Array — 或者任何這些對(duì)象的組合。這是 UTF-8 編碼的文件內(nèi)容。

  • name

    表示文件名稱,或者文件路徑。

  • options 可選

    選項(xiàng)對(duì)象,包含文件的可選屬性。可用的選項(xiàng)如下:

    • type: 表示將要放到文件中的內(nèi)容的 MIME 類型。默認(rèn)值為 "" 。
    • lastModified: 數(shù)值,表示文件最后修改時(shí)間的 Unix 時(shí)間戳(毫秒)。默認(rèn)值為 Date.now()。

每個(gè)File類型對(duì)象都有有些只讀屬性

  • name:本地系統(tǒng)中的文件名
  • size:以字節(jié)計(jì)的文件大小
  • type:包含文件MIME類型的字符串
  • lastModifiedDate:表示文件的最后修改時(shí)間

File接口基于Blob,稍后將介紹Blob

File 接口沒(méi)有定義任何方法,但是它從 Blob 接口繼承了以下方法:

  • Blob.slice
    • Blob.slice([start[, end[, contentType]]])
  • 返回一個(gè)新的 Blob 對(duì)象,它包含有源 Blob 對(duì)象中指定范圍內(nèi)的數(shù)據(jù)。

3. Blob

binary large object:二進(jìn)制大對(duì)象

Blob 對(duì)象表示一個(gè)不可變、原始數(shù)據(jù)的類文件對(duì)象。它的數(shù)據(jù)可以按文本或二進(jìn)制的格式進(jìn)行讀取,也可以轉(zhuǎn)換成 ReadableStream 來(lái)用于數(shù)據(jù)操作。

Blob 表示的不一定是 JavaScript 原生格式的數(shù)據(jù)。File 接口基于 Blob,繼承了 Blob 的功能并將其擴(kuò)展以支持用戶系統(tǒng)上的文件。

打印出的Blob對(duì)象:詳細(xì)說(shuō)明

部分讀取使用Blob.slice([start[, end[, contentType]]])

4. fetch

Fetch API 提供了一個(gè) JavaScript 接口,用于訪問(wèn)和操縱 HTTP 管道的一些具體部分,例如請(qǐng)求和響應(yīng)。它還提供了一個(gè)全局 fetch() 方法,該方法提供了一種簡(jiǎn)單,合理的方式來(lái)跨網(wǎng)絡(luò)異步獲取資源。

用法

fetch()接受一個(gè) URL 字符串作為參數(shù),默認(rèn)向該網(wǎng)址發(fā)出 GET 請(qǐng)求,返回一個(gè) Promise 對(duì)象。

基本示例

fetch(url)
    .then((response)=>{})
    .catch((err)=>{})

fetch()接收到的response是一個(gè) Stream 對(duì)象,因此只能被讀取一次,更多用法見(jiàn)Fetch API

總結(jié)

到此這篇關(guān)于js獲得相對(duì)路徑文件并上傳到服務(wù)器的文章就介紹到這了,更多相關(guān)js獲得相對(duì)路徑文件并上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS+Canvas繪制動(dòng)態(tài)時(shí)鐘效果

    JS+Canvas繪制動(dòng)態(tài)時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了JS+Canvas繪制動(dòng)態(tài)時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Js 代碼中,ajax請(qǐng)求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因

    Js 代碼中,ajax請(qǐng)求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因

    Js 代碼中,ajax請(qǐng)求地址后加隨機(jī)數(shù)防止瀏覽器緩存的原因,需要的朋友可以參考一下
    2013-05-05
  • JS實(shí)現(xiàn)遮罩層效果的簡(jiǎn)單實(shí)例

    JS實(shí)現(xiàn)遮罩層效果的簡(jiǎn)單實(shí)例

    這篇文章介紹了JS實(shí)現(xiàn)遮罩層效果的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • web前端開(kāi)發(fā)也需要日志

    web前端開(kāi)發(fā)也需要日志

    web前端開(kāi)發(fā)過(guò)程中調(diào)試是一個(gè)不可避免的過(guò)程,我們有眾多的瀏覽器可供選擇,但是如果您要調(diào)試的平臺(tái)瀏覽器不是那么先進(jìn)呢
    2010-12-12
  • css+html+js實(shí)現(xiàn)五角星評(píng)分

    css+html+js實(shí)現(xiàn)五角星評(píng)分

    這篇文章主要為大家詳細(xì)介紹了css+html+js實(shí)現(xiàn)五角星評(píng)分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 最新評(píng)論

    桐梓县| 金塔县| 聂荣县| 文山县| 安仁县| 册亨县| 济南市| 上栗县| 巴东县| 沙洋县| 登封市| 礼泉县| 辰溪县| 石嘴山市| 花莲市| 天门市| 类乌齐县| 溧阳市| 逊克县| 醴陵市| 鸡泽县| 佛山市| 湄潭县| 六枝特区| 驻马店市| 瑞丽市| 商南县| 绥化市| 静安区| 苍南县| 闽清县| 濉溪县| 青田县| 通榆县| 梨树县| 闻喜县| 石林| 南充市| 万源市| 桂平市| 司法|