javascript - 从 Adonis V4.1 发送和显示图像
问题描述
如何从 React 应用程序发送图像到 Adonis,将其“保存”在数据库中,并在需要时获取它以在前端使用?
现在,我只能通过 Postman 成功处理图像,我的代码是这样的:
const image = request.file('photo', {
types: ['image'],
size: '2mb',
});
await image.move(Helpers.tmpPath('uploads'), {
name: `${Date.now()}-${image.clientName}`,
});
if (image.status !== 'moved') {
return image.error;
}
/////
const data = {
username,
email,
role,
photo: image.fileName,
password,
access: 1,
};
const user = await User.create(data);
在第一部分中,我处理图像并将其移动到后端内的 tmp,在下一部分中我使用image.fileName
并创建一个用户。
当我需要获取我的用户列表时,我会这样做:
const colaboradoresList = await Database.raw(
'select * from colaboradores where access = 1'
);
const userList = colaboradoresList[0];
userList.map((i) => (i.url = Helpers.tmpPath(`uploads/${i.photo}`)));
但正如你所知道的,Helpers.tmpPath('uploads/${i.photo}'))
它将返回当前图像的本地路径,并且我无法在 React 上显示它,因为我需要使用公共文件夹或下载它并导入。
有没有办法在本地进行,或者唯一的方法是创建一个 AWS 并用于Drive.getUrl()
创建一个 URL 并发送回我的前端?
解决方案
代替
await image.move(Helpers.tmpPath('uploads'), {
name: `${Date.now()}-${image.clientName}`,
});
我用:
await image.move(Helpers.publicPath('uploads'),
{name: `${Date.now()}-${image.clientName}`})
然后发送到前端url = '/uploads/${i.photo}'
,文件名在哪里i.photo
,所以我可以像这样在 React 中连接apiBase + url
。
结果是你apiUrl + your file path
应该在公用文件夹上:
推荐阅读
- spring-boot - 在 Spring Cloud 数据流中获取 DataFlowClientException
- javascript - 使用变量设置变量后,更改第一个变量也更改第二个?
- object - 我有一个图像数据集如何根据 train.csv 和 test.csv 拆分它
- c# - 使用 Html.RenderPartial 在父视图和子视图之间共享 C# ASP.NET MVC 错误模型
- mysql - 基于19列性能的mysql查询
- javascript - 节点 js 服务器标头
- css - 我们可以在 CSS 中标记整个组!重要吗?
- laravel - 如何在 laravel 5.7 中路由按钮
- hyperledger-fabric - 无法为 AWS 托管区块链超级账本结构解析证书颁发机构端点
- spring-kafka - 当 ConcurrentKafkaListenerContainerFactory 中的一个消费者线程失败时会发生什么