1. 解析URL并獲取文件內容:
首先,需要從URL獲取文件內容。這通常涉及到HTTP請求,可以使用fetch API來實現。以下函數,用于從URL獲取Blob對象:
async function fetchBlobFromURL(url) {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const blob = await response.blob();
return blob;
}
2.創建File對象:
在獲取到Blob對象后,可以基于這個Blob對象來創建File對象。File對象實際上是Blob的一個子類,因此Blob對象可以很容易地轉換為File對象。以下函數,用于將Blob對象轉換為File對象:
function blobToFile(blob, fileName) {
return new File([blob], fileName, { type: blob.type, lastModified: Date.now() });
}
3.綜合使用:
將上述兩個步驟結合起來,實現從URL到File對象的完整轉換。
async function urlToFile(url, fileName) {
try {
const blob = await fetchBlobFromURL(url);
const file = blobToFile(blob, fileName);
return file;
} catch (error) {
console.error('Error converting URL to File:', error);
throw error;
}
}
// 使用示例
urlToFile('https://example.com/path/to/your/file.pdf', 'downloaded_file.pdf')
.then(file => {
console.log('File created:', file);
})
.catch(error => {
console.error('Error:', error);
});