当前位置: 代码网 > it编程>编程语言>Javascript > JavaScript文本转文件下载、下载图片、下载视频

JavaScript文本转文件下载、下载图片、下载视频

2024年08月02日 Javascript 我要评论
下载媒体文件时,如果图片地址可以显示但是传过来的内容不是图片格式,使用封装方法不会进行下载,点击下载按钮后会跳转到这个图片页面。如果使用方法不能下载需要请求下载资源之后进行下载。

javascript文本转文件下载、下载图片、下载视频

下载媒体文件时,如果图片地址可以显示但是传过来的内容不是图片格式,使用封装方法downloaduri不会进行下载,点击下载按钮后会跳转到这个图片页面。

如果使用方法downloaduri不能下载需要请求下载资源之后进行下载

封装方法

export const downloadblob = (blob: blob, name: string) => {
  // 创建一个下载链接并模拟点击
  const url = url.createobjecturl(blob);
  const a = document.createelement('a');
  a.href = url;
  a.download = name;
  document.body.appendchild(a);
  a.click();

  // 清理
  document.body.removechild(a);
  url.revokeobjecturl(url);
};

/**
 * 导出图像
 * @param uri
 * @param name
 */
export function downloaduri(uri: string, name: string) {
  const link = document.createelement('a');
  link.download = name;
  link.href = uri;
  document.body.appendchild(link);
  link.click();
  document.body.removechild(link);
}

demo示例

示例方法中提供了两种下载方式分别是:blob和链接下载

<script lang="ts" setup>
import { ref } from 'vue';
import { downloadblob, downloaduri } from '@/views/test/download/downloadutil.ts';

const text = ref('文本内容...');
const image = 'https://gips2.baidu.com/it/u=1651586290,17201034&fm=3028&app=3028&f=jpeg&fmt=auto&q=100&size=f600_800';
const video = ref('https://videos.pexels.com/video-files/26806984/12011233_360_640_24fps.mp4');
/**
 * * 下载文本
 */
const ondownloadtext = () => {
  const blob = new blob([text.value], { type: 'text/plain;charset=utf-8' });
  downloadblob(blob, '下载文本.txt');
};

/**
 * * 下载图片
 */
const ondownloadimage = () => {
  const imageblob = fetch(image).then(res => res.blob());
  imageblob.then(blob => downloadblob(blob, 'blob图片.png'));

  // 如果浏览器返回的不是图片格式会跳转到图片页面
  downloaduri(image, 'a标签图片.png');
};

/**
 * * 下载视频
 */
const ondownloadvideo = () => {
  const imageblob = fetch(video.value).then(res => res.blob());
  imageblob.then(blob => downloadblob(blob, 'blob视频.mp4'));

  downloaduri(video.value, 'a标签视频.mp4');
};
</script>

<template>
  <div class="contain-layout">
   <div>
    <button class="btn btn-primary" @click="ondownloadtext">下载文本</button>
    <button class="btn btn-primary" @click="ondownloadimage">下载图片</button>
    <button class="btn btn-primary" @click="ondownloadvideo">下载视频</button>
   </div>

   <div class="row mt-3">
    <textarea :value="text" class="w-[400px]" />
    <img :src="image" alt="" class="w-[150px] h-[150px]" />
    <video :src="video" alt="" class="w-[300px] h-[300px]" />
   </div>
  </div>
</template>
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com