HarmonyOS+Django实现图片上传
话不多说,直接看代码:
HarmonyOS部分代码
import { router } from "@kit.ArkUI"
import PreferencesUtil from "../utils/PreferencesUtil"
import { photoAccessHelper } from "@kit.MediaLibraryKit"
import fs from '@ohos.file.fs';
import BASE_URL from "../common/Constant";
import { http } from "@kit.NetworkKit";
import { BusinessError, request } from "@kit.BasicServicesKit";
import { JhProgressHUD } from "../utils/LoadingUtil";// 定义类型
interface UploadResponse {body: string
}interface Response {/*** 业务状态码*/code: number;/*** 响应数据*/file_path: string;/*** 响应消息*/msg: string;
}@Component
export struct indexContent{uiContext?: UIContextaboutToAppear() {// 初始化Loadingthis.uiContext = this.getUIContext();JhProgressHUD.initUIConfig(this.uiContext)}build() {Scroll(){Column(){Column({space:10}){Image($r('app.media.put')).width(45).backgroundColor('#FFFF').borderRadius(10).fillColor('#000')Text('上传图片').fontColor('#FFFF').fontSize(18)Text('夜间图像增强').fontColor('#ffa29494').fontSize(15)}.width(300).height(150).border({ width: 3, color: 0xFFFFFF, radius: 10, style: BorderStyle.Dotted }).margin({top:20}).borderRadius(10).justifyContent(FlexAlign.Center).onClick(async () => {let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;PhotoSelectOptions.maxSelectNumber = 1;let photoPicker = new photoAccessHelper.PhotoViewPicker();photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {let select_img_uri = PhotoSelectResult.photoUris[0]const context = getContext(this)const fileType = 'jpg'const fileName = Date.now() + '.' + fileTypeconst copyFilePath = context.cacheDir + '/' + fileNameconst file = fs.openSync(select_img_uri, fs.OpenMode.READ_ONLY)fs.copyFileSync(file.fd, copyFilePath)let files: Array<request.File> = [{filename: fileName,type: fileType,name: 'img',uri: `internal://cache/${fileName}`}]request.uploadFile(context, {url: `${BASE_URL}/img/progressing/select_img/`, // url 地址method: http.RequestMethod.POST, // 请求方法header: {// 和接口文档的要求的格式对象contentType: 'multipart/form-data',},files, // 文件信息data: [] // 额外提交的数据,不能省略}).then((res) => {res.on('headerReceive', async (value) => {const uploadRes = (value as UploadResponse)const response = JSON.parse(uploadRes.body) as Responselet img_uri = `${response.file_path}` //获取后端返回的urlif (img_uri){JhProgressHUD.showLoadingText()router.pushUrl({url: "pages/Preview", params:{image_url: img_uri, special: true} })}})})}).catch((err: BusinessError) => {console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);});})}}.width('100%')}
}
Django部分代码
class ImgProgressingView(ModelViewSet):@action(methods=['POST'], detail=False, url_path='select_img')def select_img(self, request):"""选择需要处理的图片:param request::return:"""img_file = request.FILES.get('img')if not img_file:return Response({"code": 400, "msg": "No image file provided"})# 确保 media/enhance 目录存在enhance_dir = os.path.join('media', 'enhance')if not os.path.exists(enhance_dir):os.makedirs(enhance_dir)# 构建完整的文件路径file_path = os.path.join(enhance_dir, img_file.name)# 使用 with open 保存图片with open(file_path, 'wb') as f:for chunk in img_file.chunks():f.write(chunk)res_file_path = "/" + file_path.replace('\\', '/')return Response({"code": 200, "msg": "Image saved successfully", "file_path": res_file_path})
相关文章:
HarmonyOS+Django实现图片上传
话不多说,直接看代码: HarmonyOS部分代码 import { router } from "kit.ArkUI" import PreferencesUtil from "../utils/PreferencesUtil" import { photoAccessHelper } from "kit.MediaLibraryKit" import fs from oh…...
vscode 版本
vscode官网 Visual Studio Code - Code Editing. Redefined 但是官网只提供最新 在之前的版本就要去github找了 https://github.com/microsoft/vscode/releases 获取旧版本vscode安装包的方法_vscode 老版本-CSDN博客...
Python 爬虫实战案例 - 获取拉勾网招聘职位信息
引言 拉勾网,作为互联网招聘领域的佼佼者,汇聚了海量且多样的职位招聘信息。这些信息涵盖了从新兴科技领域到传统行业转型所需的各类岗位,无论是初出茅庐的应届生,还是经验丰富的职场老手,都能在其中探寻到机遇。 对…...
结构型模式---外观模式
概念 外观模式是一种结构型设计模式,它的核心思想是为复杂的子系统提供一个统一的接口,简化客户端与子系统的交互。外观模式通过引入一个高层接口,隐藏子系统的复杂性,使客户端更容易使用。 适用场景 用于客户端无需具体操作子…...
Docker数据卷操作实战
什么是数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷 可以在容器之间共享和享用对 数据卷 的修改立马生效对 数据卷 的更新,不会影响镜像数据卷 默认会一直存在,即时容器被…...
技术速递|Copilot Usage Advanced Dashboard 教程
作者:Xuefeng Yin 排版:Alan Wang Copilot Usage Advanced Dashboard 是为了充分利用 GitHub Copilot API 中的几乎所有数据,用到的 API 有: List teams of an onganization Get a summary of Copilot metrics for a team Get C…...
【Python爬虫(90)】以Python爬虫为眼,洞察金融科技监管风云
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...
Shell学习(1/6) 教程-变量
一、教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell…...
《Qt窗口动画实战:Qt实现呼吸灯效果》
Qt窗口动画实战:Qt实现呼吸灯效果 在嵌入式设备或桌面应用中,呼吸灯效果是一种常见且优雅的UI动画,常用于指示系统状态或吸引用户注意。本文将介绍如何使用Qt动画框架实现平滑的呼吸灯效果。 一、实现原理 利用Qt自带的动画框架来实现&…...
RabbitMQ系列(六)基本概念之Routing Key
在 RabbitMQ 中,Routing Key(路由键) 是用于将消息从交换机(Exchange)路由到指定队列(Queue)的关键参数。其核心作用是通过特定规则匹配绑定关系,确保消息被正确分发。以下是其核心机…...
Spring Boot 集成 Kafka
在现代软件开发中,分布式系统和微服务架构越来越受到关注。为了实现系统之间的异步通信和解耦,消息队列成为了一种重要的技术手段。Kafka 作为一种高性能、分布式的消息队列系统,被广泛应用于各种场景。而 Spring Boot 作为一种流行的 Java 开…...
CentOS中shell脚本对多台机器执行下载安装
1.建立免密ssh连接 详情见这篇: CentOS建立ssh免密连接(含流程剖析)-CSDN博客 2.脚本编写 我这里只是简单写了个demo进行演示,如果服务器很多可以先暂存成文件再逐行读取host进行连接并执行命令 用node1去ssh连接node2和node…...
浅析eBPF
目录 一、eBPF 原理 二、eBPF 已可投入使用的场景 三、eBPF 与 Jaeger/Zipkin 的区别及先进性 四、使用 eBPF 的开源软件 五、开源软件的局限性或待实现功能 猫哥说 一、eBPF 原理 eBPF (extended Berkeley Packet Filter) 是一种内核技术,允许用户在内核空间…...
HTML 基础 (快速入门)详细步骤和示例
目录 创建基本的 HTML 文件 添加内容到页面 页面布局与链接 HTML(超文本标记语言)是构建网页的基础技术,以下是 HTML 基础的详细步骤和示例: 创建基本的 HTML 文件 步骤一:新建文件 在本地计算机上选择一个合适的…...
力扣-动态规划-139 单词拆分
思路 dp数组定义:用wordDict数组可以完成不超过j的字符串的可能为dp[j]递推公式: tmp s.substr(j - wordDict[i].size(), wordDict[i].size()); dp[j] (dp[j - wordDict[i].size()] && wordDict[i] tmp) || dp[j]; dp数组初始化:…...
建筑能耗监测系统数据采集装置 物联网网关功能参数介绍
安科瑞刘鸿鹏 摘要 随着物联网(IoT)技术的迅猛发展,现代物联网系统的规模和复杂度不断增加,各种智能设备和传感器的广泛应用为数据采集和分析提供了丰富的信息源。然而,面对不同协议、标准和通信方式的设备ÿ…...
vue深拷贝:1、使用JSON.parse()和JSON.stringify();2、使用Lodash库;3、使用深拷贝函数(采用递归的方式)
文章目录 引言三种方法的优缺点在Vue中,实现数组的深拷贝I JSON.stringify和 JSON.parse的小技巧深拷贝步骤缺点:案例1:向后端请求路由数据案例2: 表单数据处理时复制用户输入的数据II 使用Lodash库步骤适用于复杂数据结构和需要处理循环引用的场景III 自定义的深拷贝函数(…...
ES 删除index 的curl
以下是使用 `curl` 命令删除 Elasticsearch 索引的格式和示例: ### 基本格式 ```bash curl -XDELETE "http://<node-ip|hostname>:9200/<index-name>" ``` - `<node-ip|hostname>`:Elasticsearch 节点的 IP 地址或主机名。 - `<index-name&g…...
游戏引擎学习第124天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天,我们已经介绍了多线程的一些基础知识,包括如何创建工作队列以及如何在线程中处理任务。今天,重点是解决那些我们之前没有注意到…...
第十四届蓝桥杯Scratch11月stema选拔赛真题——小猫照镜子
编程实现: 小猫照镜子。(背景非源素材) 具体要求: 1). 运行程序,角色、背景如图所示; 完整题目可点击下方链接查看,支持在线编程~ 小猫照镜子_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/s…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
