在Vue中,我們可以使用Blob對象來獲取圖片的本地url。Blob對象代表二進制數據,并且可以用于將數據存儲為文件。
async getImageUrlFromBlob(blob) { return new Promise((resolve, reject) => { const fileReader = new FileReader(); fileReader.onload = () => { resolve(fileReader.result); }; fileReader.onerror = () => { reject(new Error('Unable to read file')); }; fileReader.readAsDataURL(blob); }); }
我們可以使用上面的代碼將Blob對象轉換為本地url。
首先,我們需要使用FileReader對象來讀取Blob對象的數據。然后,我們將讀取的數據轉換為base64格式的字符串,并將其分配給FileReader對象的result屬性。接下來,我們可以使用Promise對象來返回已轉換的URL。
在實際情況下,我們可能需要通過表單上傳文件,然后使用Blob對象獲取文件,并將其轉換為本地URL。下面是一個完整的例子:
async uploadFile(event) { const file = event.target.files[0]; const blob = new Blob([file], { type: file.type }); const url = await this.getImageUrlFromBlob(blob); this.image = url; }
這個函數將被呼叫來上傳文件。當用戶選擇要上傳的文件時,事件回調函數將自動開始運行。回調函數使用event.target.files獲取文件,并使用Blob對象將其轉換為二進制數據。然后,它使用getImageUrlFromBlob函數獲取文件的本地URL,并將其分配給Vue實例中的image數據屬性。
值得注意的是,Blob對象可以存儲任何類型的數據,包括圖像、視頻、音頻等。因此,在實際情況下,應根據需要更改mime類型或文件擴展名。