问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

react图片预览增加下载按钮

发布网友 发布时间:2023-02-15 10:32

我来回答

5个回答

热心网友 时间:2023-10-06 15:58

// 利用React实现图片预览功能,并在预览图片上添加下载按钮:

import React, { useState } from 'react';
import { Button, Modal } from 'react-bootstrap';

const ImagePreview = () => {
const [show, setShow] = useState(false);
const [imgSrc, setImgSrc] = useState('');

const getImage = (e) => {
let reader = new FileReader();
const file = e.target.files[0];
reader.onloadend = () => {
setShow(true);
setImgSrc(reader.result)
}
reader.readAsDataURL(file);
}

const downloadImage = () => {
const link = document.createElement('a');
link.download = 'image';
link.href = imgSrc;
link.click();
}

return (
<>
<input type="file" onChange={getImage} />
<Modal show={show}>
<Modal.Body>
<img src={imgSrc} alt="image preview"/>
</Modal.Body>
<Modal.Footer>
<Button onClick={downloadImage}>Download Image</Button>
</Modal.Footer>
</Modal>
</>
)
}

export default ImagePreview;

热心网友 时间:2023-10-06 15:58

功能

在react图片预览的基础上,增加一个下载按钮,给用户提供下载功能。

通常情况下,下载按钮可以是个图标在图片预览的左下角,或者在图片预览中加入一个按钮标签,点击图片,弹出下载框。

引入具体实现方法:

1. 使用React中的a标签,在图片预览容器中增加一个按钮,并将a标签中的href属性设置为图片地址,点击按钮即可下载该图片,代码如下:

```
<a download="xxx" href={imageUrl}>
下载按钮
</a>
```

2. 使用React中的file-saver模块,通过调用模块中的saveAs函数,实现图片的下载功能,具体代码如下:

```javascript
import FileSaver from 'file-saver';

handleDownloadClick()

热心网友 时间:2023-10-06 15:58

前端
【react】点击按钮下载图片功能以及XMLHttpRequest的基本用法

Chic。
原创
关注
1点赞·277人阅读
图片下载点击事件

const handlerDown = (url: string, name: string) => {
const x = new XMLHttpRequest();
const resourceUrl = url;
x.open('GET', resourceUrl, true);
x.responseType = 'blob';
x.onload = function () {
const urls = window.URL.createObjectURL(x.response);
const a = document.createElement('a');
a.href = urls;
a.download = name + '.png';
a.click();
};
x.send();
};
登录后复制

调用图片下载功能

<Button
type="link"
size="middle"
onClick={() => handlerDown('https://www.baidu.com/', '测试测试') }
/>
登录后复制
XMLHttpRequest的基本用法
XMLHttpRequest是浏览器内置的一个构造函数。因此使用的时候需要 new ​ 作用,基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数
xhr.open('GET', 'https://www.baidu.com');
// 调用 xhr.send() 函数
xhr.send();
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

GET请求携带参数

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数 -- get参数
xhr.open('GET', 'https://www.baidu.com');
// 调用 xhr.send() 函数
xhr.send();
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

POST请求携带参数

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数
xhr.open('POST', 'https://www.baidu.com');
// 调用 xhr.send() 函数
// 设置头部信息
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('');
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

responseType
XMLHttpRequest.responseType 属性是一个枚举类型的属性,设置返回响应数据的类型。
react.js
javascript
前端


点赞文章给优秀博主打call~
新款凉鞋,上脚舒适不累脚,现在下单超划算
精选推荐
广告

热心网友 时间:2023-10-06 15:59

图片下载点击事件

const handlerDown = (url: string, name: string) => {
const x = new XMLHttpRequest();
const resourceUrl = url;
x.open('GET', resourceUrl, true);
x.responseType = 'blob';
x.onload = function () {
const urls = window.URL.createObjectURL(x.response);
const a = document.createElement('a');
a.href = urls;
a.download = name + '.png';
a.click();
};
x.send();
};
登录后复制

调用图片下载功能

<Button
type="link"
size="middle"
onClick={() => handlerDown('https://www.baidu.com/', '测试测试') }
/>
登录后复制
XMLHttpRequest的基本用法
XMLHttpRequest是浏览器内置的一个构造函数。因此使用的时候需要 new ​ 作用,基于 new 出来的 XMLHttpRequest 实例对象,可以发起 Ajax 的请求。

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数
xhr.open('GET', 'https://www.baidu.com');
// 调用 xhr.send() 函数
xhr.send();
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

GET请求携带参数

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数 -- get参数
xhr.open('GET', 'https://www.baidu.com');
// 调用 xhr.send() 函数
xhr.send();
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

POST请求携带参数

// 创建 xhr 对象
const xhr = new XMLHttpRequest();
// 调用 xhr.open() 函数
xhr.open('POST', 'https://www.baidu.com');
// 调用 xhr.send() 函数
// 设置头部信息
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('');
// 监听 load 事件
xhr.addEventListener('load', function() {
console.log('load事件');
});
登录后复制

responseType
XMLHttpRequest.responseType 属性是一个枚举类型的属性,设置返回响应数据的类型。
react.js
javascript
前端

热心网友 时间:2023-10-06 16:00

在React中,可以使用react-image-gallery插件来实现图片预览,并在图片预览中增加下载按钮。使用这个插件,可以很容易地实现图片的预览和下载的功能,而且它支持多种主流浏览器。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
含羞草图片-含羞草(花期图,果期图,欣赏图) 全球气候变暖的后果 全球气候变暖有什么影响 情侣身高差几离米最何适?我167,穿蓝球鞋171,女朋友要多高? 如何禁止u盘传文件 事业单位醉驾会开除吗? excel表格负数金额怎么输入 exce怎么输入负数-excel中输入正负数教程 能让仓鼠跟着走的音乐? ...件和合同都发过去给他了他要我在打1000块钱过去。 我在人人贷款了30000元!合同也签了!但是人家就是没有放款!还让我到一... 路由器上的网线接上电脑后网口灯不亮? 两字传媒公司名字? 滇池在昆明哪个区 伊利面试官为什么不先退 我该怎样防备这种诈骗? 三个字好听又聚财的公司名称吉利大气的取名? 为什么b站直播每日经验不更新 300个吉祥公司名字三个字? 女生在分手后多长时间会想复合 我盘里的txt文件,log文件,rtf文件图标都变花了 主播能看到淘宝群内看直播吗 ##老人网购250克香菇包装就占200克 梦到自己很着急找考场 梦到考试一直在找试卷代表什么含义 放学别走讨论问题被老师拿黑板擦打第几集 夜刀神十香把名字写在黑板上是第几集 全世界最好的你许放擦黑板是第几集 放学别走老师用黑板擦扔学生是第几集 平板带耳机怎么会议转文字 《天才在左,疯子在右》颠覆我对精神病人的认知 奔驰22款c200l怎么安装腾讯视频软件 传媒公司起什么名 电信光纤上不了网,网口1灯不亮是什么原因? 电脑网口灯不亮 淘宝带美的的电饭煲内胆是真的吗 咸丰元宝当百大钱宝河局值多少钱 电热蚊香是拖式的好还是挂式的好? 四个字响亮公司的名字? 婚外情产生的原因 婚外恋是怎么出现的 这些原因导致 导致婚外情的主要原因有哪些? 畅行花每推一次都查一次征信吗 畅行花征信不好能下款吗 畅行花征信不好还能下款吗 你好医生我掉发大概有好几个月的时间了,主要是额头两边和头顶,头发一天不洗还会出油,现在我该怎么办呢 费的拼音和组词 手机号码被人绑定工放怎么办 商家收款码恶意举报不了 结合中国国情,如何发挥大股东天使的一面 餐饮类买菜怎么做结转会计分录 餐饮会计中,成本分录如何做?如何结转?