- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 React webapp 将文件发送到 api 端点,目前作为模型一直在使用文件上传。此后我添加了相机功能,因为我计划让用户能够拍照并上传该照片。我正在使用 react-html5-camera-photo
来捕获 datauri 元素。如何将其转换为文件以上传到端点?或者我处理这个问题的方式不正确?
文件上传:
handleUploadImage=()=> {
console.log(this.state.selectedFile)
const data = new FormData();
data.append('file', this.state.selectedFile);
data.append('filename', this.state.selectedFile.name);
fetch('http://localhost:5000/upload', {
method: 'POST',
body: data,
})
.then((response) => {
response.json()
.then((response) => {
//this.setState({ imageURL: `http://localhost:5000/${body.file}` });
console.log(response.text)
this.setState({ text: response.text})
this.getPlate()
})
});
}
相机代码:
startCamera = () => {
console.log('starting camera')
if(!this.state.cameraLoad) {
this.setState({ cameraLoad: true, camIconData: collapse}) ;
} else {
this.setState({ cameraLoad: false, camIconData: expand}) ;
}
}
onTakePhoto = (dataUri) => {
// Do stuff with the dataUri photo...
console.log('photo taken');
this.setState({ camColor: 'green', dataUri : dataUri })
}
// will upload photo after user confirms to upload
uploadPhoto = e => {
console.log('uploading photo')
console.log(this.state.dataUri)
this.setState({ camColor: 'green', dataUri: null, cameraLoad: false });
};
dataUri 元素看起来像:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAAgAElEQVR4XlS9h5Nk63HdmeVdV5vpmXnzDAEQBAiKwlJmIzZiQ/u/72qDWongkpREQFjRgHh2/LQp7zd+52TeavSLfjPTXXXr3s/kl3n
最佳答案
这是完整的示例。请编写一个CameraComponent,如下所示,您将在其中找到submitPhoto()函数,该函数负责将图像上传到api。
import React, {useState} from 'react';
import Camera from 'react-html5-camera-photo';
import 'react-html5-camera-photo/build/css/index.css';
import ImagePreview from "./ImagePreview";
import axios from 'axios';
function CameraComponent(props) {
const [dataUri, setDataUri] = useState('');
const isFullscreen = false;
const cameraRef = React.useRef();
function handleTakePhoto(dataUri) {
console.log('takePhoto');
}
function handleTakePhotoAnimationDone(dataUri) {
console.log(dataUri, 'takePhoto');
setDataUri(dataUri);
}
function handleCameraError(error) {
console.log('handleCameraError', error);
}
function handleCameraStart(stream) {
console.log('handleCameraStart');
}
function handleCameraStop() {
console.log('handleCameraStop');
}
function submitPhoto() {
const url = "http://localhost:3000/api/img";
const request = axios.post(url, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
img: dataUri
})
}).catch(error => {
console.warn(error);
});
}
return (
<div>
<button onClick={submitPhoto}>Upload</button>
{(dataUri)
? <ImagePreview dataUri={dataUri}
isFullscreen={isFullscreen}
/> :
<Camera ref={cameraRef}
onTakePhoto={(dataUri) => {
handleTakePhoto(dataUri);
}}
onTakePhotoAnimationDone={(dataUri) => {
handleTakePhotoAnimationDone(dataUri);
}}
onCameraError={(error) => {
handleCameraError(error);
}}
onCameraStart={(stream) => {
handleCameraStart(stream);
}}
onCameraStop={() => {
handleCameraStop();
}}
/>
}
</div>
);
}
export default CameraComponent;
这是另一个组件 ImagePreview,它将预览图像
import React from 'react';
import PropTypes from 'prop-types';
import './styles/imagePreview.css';
export const ImagePreview = ({ dataUri, isFullscreen }) => {
let classNameFullscreen = isFullscreen ? 'demo-image-preview-fullscreen' : '';
return (
<div className={'demo-image-preview ' + classNameFullscreen}>
<img src={dataUri} />
</div>
);
};
ImagePreview.propTypes = {
dataUri: PropTypes.string,
isFullscreen: PropTypes.bool
};
export default ImagePreview;
关于javascript - 如何将 datauri 元素转换为可以通过 React 上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61124866/
如你所知&stated in w3可以使用 Blob 的 createObjectUrl 在 javascript 中为 Blob 对象创建 url。另一方面,如果我们有一个 Base64 编码字符串
有没有办法强制最新的 FireFox 打开下载对话框以使用正确的文件名保存一些本地镜像数据(dataURI、dataURL)?我想下载图片。 window.open('data:application
我想拍一张本 map 片,调整它的大小并输出dataURI。为什么我的 base64_encode 代码不起作用? '; $new_image = imagecreatetruecolor($
我允许用户根据这篇文章从文件系统加载自己的图像文件(最后一部分 - 来自本地文件系统的图像) https://stackoverflow.com/a/20285053 我的代码 handleFiles
Sass 一直给我未闭合的引号错误: ExecJS::ProgramError - /application.css.scss:10760:41102: Unclosed quote 11:47:13
我想生成由标签和图标组成的图像。标签部分会有很大差异(50-100),而图标大约有 10 个。我想通过将最终图像分成两部分(标签图像和图标图像)以模块化方式制作最终图像。我将构建一个返回标签 data
我正在使用基本的 telerik 导出文档到 pdf 功能。这非常适合将页面直接导出给用户。然后我通过 datauri 将其作为字符串传递给 Controller 。 如何将其转换回文件以便我可以
我正在编写一个 javascript 应用程序,它从基于 PHP 的 API 中获取数据作为 JSON。当前图像 URL 是从 API 接收的,然后用于使用 显示它们。标签。 使用 dataURI
我需要在 OffscreenCanvas 上进行一些绘图,然后将其显示为 div 元素的背景图像。 最简单的方法是什么? 最佳答案 对您来说最简单的方法是使用OffscreenCanvas.conve
是否可以在 XmlHttpRequest (AJAX) 调用中使用 DataURI 而不是 URL,这样它就不会真正通过网络传输,而是使用客户端中已有的数据?我打算尝试一下,但我想看看是否有人做过类似
我从 DOM 中获取一些 SVG,将其转换为 dataURI,将其作为图像绘制到 Canvas 元素,然后读取图像数据的像素。这在 chrome 和 FF 中运行良好,但 IE 10 给我一个安全错误
我遇到了一个奇怪的问题。我在页面上有一些从数据 URI 呈现的图像,我想让我的用户能够将它们复制到剪贴板。 但是,出于某种原因,Firefox 和 Chrome 似乎都不允许我这样做。 以这个页面为例
很多时候图像会内联在网站上,要么是img标签的src属性有数据url字符串而不是链接,要么css背景属性值是url(..),其中包含数据url而不是url。 如何下载该图片,尤其是背景图片。 现在
我正在通过 React webapp 将文件发送到 api 端点,目前作为模型一直在使用文件上传。此后我添加了相机功能,因为我计划让用户能够拍照并上传该照片。我正在使用 react-html5-cam
当 src 时,我无法触发 onLoad 处理程序 的属性加载了 dataURI。 Here is the jsFiddle . 这似乎是浏览器兼容性问题。 处理程序在 Firefox 中按预期触发。
好吧,我已经阅读了至少一百篇关于此的文章,但我找不到明确的例子来准确地做我想做的事情。我正在使用 RecordRTC 来获取我的视频。我可以以 blob:http://www.example.com/
我在 Raspberry Pi 上运行了 fswebcam。使用命令行,这将保存 JPG 图像。 我现在想在 Node.js 应用程序中接收这些图像,并通过 dataURI 将它们发送到浏览器中使用。
问题很简单(问) 有什么方法可以将脚本注入(inject)仅包含图像的选项卡 并具有以下形式的 URL: data:image/png;base64,iVBORw0K.... 控制台给我错误: 无法访
我在 JavaScript 中创建了一个函数,将用户选择的“图像”文件转换为 dataURI。然后我通过 POST 方法将其传递给 php 脚本。问题是当我尝试将这些信息保存到 MySQL 中时,如下
我基本上创建了一个FIDDLE并制作了一个示例图表。 这是图表的代码 var chart = c3.generate({ data: { json: [{
我是一名优秀的程序员,十分优秀!