js獲得相對(duì)路徑文件并上傳到服務(wù)器的方法
如何通過js獲得相對(duì)路徑文件
已知一個(gè)相對(duì)路徑文件,如何使用js將該文件讀取為File格式,最后上傳到服務(wù)器中呢。
1.最簡單的解決方案——fetch
代碼
import './index.scss' // js通過相對(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('通過fetch讀取的本地文件', file) }) .catch(function (error) { console.log('加載文件失敗:', error) }) } return ( <div> <h1 className="h1-color">js通過相對(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ì)象)
語法
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ì)象,包含文件的可選屬性??捎玫倪x項(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
接口沒有定義任何方法,但是它從 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 來用于數(shù)據(jù)操作。
Blob
表示的不一定是JavaScript
原生格式的數(shù)據(jù)。File
接口基于Blob
,繼承了Blob
的功能并將其擴(kuò)展以支持用戶系統(tǒng)上的文件。
打印出的Blob對(duì)象:詳細(xì)說明
部分讀取使用Blob.slice([start[, end[, contentType]]])
4. fetch
Fetch API 提供了一個(gè) JavaScript 接口,用于訪問和操縱 HTTP 管道的一些具體部分,例如請(qǐng)求和響應(yīng)。它還提供了一個(gè)全局 fetch() 方法,該方法提供了一種簡單,合理的方式來跨網(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ì)象,因此只能被讀取一次,更多用法見Fetch API
總結(jié)
到此這篇關(guān)于js獲得相對(duì)路徑文件并上傳到服務(wù)器的文章就介紹到這了,更多相關(guān)js獲得相對(duì)路徑文件并上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript+CSS相冊(cè)特效實(shí)例代碼
下面小編就為大家?guī)硪黄狫avaScript+CSS相冊(cè)特效實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09深入理解JavaScript系列(46):代碼復(fù)用模式(推薦篇)詳解
這篇文章主要介紹了深入理解JavaScript系列(46):代碼復(fù)用模式(推薦篇)詳解,本文講解了原型繼承、復(fù)制所有屬性進(jìn)行繼承、混合(mix-in)、借用方法等模式,需要的朋友可以參考下2015-03-03javascript深拷貝的原理與實(shí)現(xiàn)方法分析
這篇文章主要介紹了javascript深拷貝的原理與實(shí)現(xiàn)方法,簡單分析了值傳遞和引用傳遞的原理與實(shí)現(xiàn)方法,并結(jié)合實(shí)例形式給出了深拷貝的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-04-04javascript中select下拉框的用法總結(jié)
這篇文章主要為大家介紹了javascript中select下拉框的用法,select在開發(fā)中經(jīng)常被用到,用于進(jìn)行選項(xiàng)選擇,需要的朋友可以參考下2016-01-01Web開發(fā)中客戶端的跳轉(zhuǎn)與服務(wù)器端的跳轉(zhuǎn)的區(qū)別
這篇文章主要介紹了Web開發(fā)中客戶端的跳轉(zhuǎn)與服務(wù)器端的跳轉(zhuǎn)的區(qū)別 ,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03javascript日期字符串轉(zhuǎn)換為時(shí)間戳的5種方法總結(jié)
在JavaScript中將日期字符串轉(zhuǎn)換為時(shí)間戳是一個(gè)常見需求,本文介紹了五種實(shí)現(xiàn)此轉(zhuǎn)換的方法,包括使用Date對(duì)象、正則表達(dá)式輔助解析、Date.parse()函數(shù)以及第三方庫如moment.js和date-fns,這些方法適用于不同格式的日期字符串,需要的朋友可以參考下2024-09-09