翼度科技»论坛 编程开发 JavaScript 查看内容

基于axios 将网络图片地址转换为file对象

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
★ 背景说明
  1. 在浏览器环境中,由于安全性限制,不能直接将网络图片地址转换成 File 对象。File 对象是用户在客户端上传文件时才能创建的,而不能由前端代码直接将网络图片地址转换成 File 对象。
复制代码
★ 解决方案
  1. 如果你想要将网络图片地址转换成 Fie 对象,你需要先将图片下载到客户端,然后再将其转换为 File 对象。这可以通过以下步骤完成:
  2. 1. 使用 Axios(或其他网络请求库)下载图片数据。
  3. 2. 将下载的数据转换成 Blob 对象。
  4. 3. 创建一个新的 File 对象,将 Blob 对象放入其中。
复制代码
★ 功能封装
  1. // 将网络图片地址转换为File对象
  2. async function imageUrlToFile(url, fileName) {
  3.   try {
  4.     // 第一步:使用axios获取网络图片数据
  5.     const response = await axios.get(url, { responseType: 'arraybuffer' })
  6.     const imageData = response.data
  7.     // 第二步:将图片数据转换为Blob对象
  8.     const blob = new Blob([imageData], {
  9.       type: response.headers['content-type']
  10.     })
  11.     // 第三步:创建一个新的File对象
  12.     const file = new File([blob], fileName, { type: blob.type })
  13.     return file
  14.   } catch (error) {
  15.     console.error('将图片转换为File对象时发生错误:', error)
  16.     throw error
  17.   }
  18. }
复制代码
★ 代码示例
  1. <!doctype html>
  2. <html>
  3. <head>
  4.     <title>网络图片地址转换为File对象</title>
  5. </head>
  6. <body>
  7. </body>
  8. </html>
复制代码
★ 结果分析
  1. File {name: 'girl', lastModified: 1719682659397, lastModifiedDate: Sun Jun 30 2024 01:37:39 GMT+0800 (中国标准时间), webkitRelativePath: '', size: 185786, …}
  2. blob:http://localhost:63342/27225c8a-56f2-45a6-9c7d-54468d9b8758'
复制代码
来源:https://www.cnblogs.com/cs-songbai/p/18275977
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

上一篇: js定时器

下一篇: js脚本化css

举报 回复 使用道具