HarmonyOS 鸿蒙Next js开发 求如何将图片进行base64位编码
HarmonyOS 鸿蒙Next js开发 求如何将图片进行base64位编码 救命,我在网上找的方法都和鸿蒙js不兼容,然后我想调用fs库进行编码发现鸿蒙也用不了!救命,孩子明天晚上就要交项目了,就差图片编码上传了。
有没有伙伴知道js开发如何通过uri将图片进行base64编码吗,求助!!!
dataability的uri必须DataAbilityHelper才可以访问,还要动态申请READ_MEDIA权限
config.json中添加相应权限
ability中动态申请
更多关于HarmonyOS 鸿蒙Next js开发 求如何将图片进行base64位编码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
太感谢了,起床后能够看见这么详细的代码还是很感动的。我刚刚按照代码成功进行了base64编码,我本来想将这个传回来在js里面发送http请求,但是传回来的时候出现问题(可能是因为字符串过长?),所以我打算跟代码一样在java端进行http请求,但是上面的代码好像还缺一个工具类HttpUtil,如果方便的话可以把那个工具类发出来参考一下吗,谢谢!,
public static final String BASE_URI = “https://…”;
public static final String PATH_KEY = “path”;
public static final String REQUEST_METHOD_KEY = “requestMethod”;
public static final String BODY = “body”;
public static final String GET = “GET”;
public static final String POST = “POST”;
public static final String PUT = “PUT”;
public static void httpPost(ZSONObject zsonObject) {
zsonObject.put(REQUEST_METHOD_KEY, POST);
httpRequest(zsonObject);
}
public static void httpRequest(ZSONObject zsonObject) {
new Thread(() -> {
InputStream stream;
HttpURLConnection conn = null;
String data = null;
try {
URL url = new URL(BASE_URI + zsonObject.getString(PATH_KEY));
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(zsonObject.getString(REQUEST_METHOD_KEY));
String body = zsonObject.getString(BODY);
conn.setReadTimeout(10000);
conn.addRequestProperty(“Content-Type”, “application/json”);
conn.addRequestProperty(“Accept-language”, “zh-CN”);
conn.addRequestProperty(“language”, “zh-CN”);
conn.addRequestProperty(“os”, “android”);
conn.addRequestProperty(“unique”, String.valueOf(System.currentTimeMillis()));
Context context = JSInterface.getContext().getApplicationContext();
DatabaseHelper databaseHelper = new DatabaseHelper(context); // context入参类型为ohos.app.Context。
String fileName = "userData"; // fileName表示文件名,其取值不能为空,也不能包含路径,默认存储目录可以通过context.getPreferencesDir()获取。
String userId = preferences.getString("userId", "");
String subsiteId = preferences.getString("subsiteId", "");
String userSession = preferences.getString("userSession", "");
conn.addRequestProperty("userId", userId);
conn.addRequestProperty("subsiteId", subsiteId);
conn.addRequestProperty("userSession", userSession);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.connect();
OutputStream out = conn.getOutputStream();
out.write(body.getBytes());
out.flush();
out.close();
int responseCode = conn.getResponseCode();
if (responseCode == 200 || responseCode == 201) {
stream = conn.getInputStream();
} else {
stream = conn.getErrorStream();
}
data = readInputStreams(stream);
RequestData requestData = new RequestData();
requestData.setCode(responseCode);
requestData.setData(data);
JSInterface.getCallback().reply(requestData);
} catch (Exception ignored) {
JSInterface.getCallback().reply(ignored.toString());
LogUtil.info("WRYCHH", "ignored " + ignored.toString());
} finally {
assert conn != null;
conn.disconnect();
}
}).start();
}
我试了下回传js也是正常的,image组件可以直接显示
data = Base64.getEncoder().encodeToString(bytes);
JSInterface.getCallback().reply("data:image/png;base64," + data);
博主您好,请问怎么把图库中的图片读取并保存到软件中啊,期望下次打开应用不会丢失?
如图,上面的是我的图片路径(从图库里面调出来了的),下面就是URI的报错…
请您参考下4楼大佬的操作,如有疑问可随时跟帖,感谢。
可以和Java通信转为base64然后再传回js…
刚刚进行了fa调用pa到java端进行编码,由于我是保存到图库的,所以我的uri是带dataability:///........
的,但是URI对象进行读取的时候报错:unknown protocol: dataability。我不知道大家有没有遇到过这种情况,我不知道应该怎么改,或者说URI本身就不支持鸿蒙图库的这个路径… 调到了3点多钟,人麻了。
欢迎开发小伙伴们进来帮帮楼主
在HarmonyOS(鸿蒙)系统中进行Next.js开发时,将图片进行Base64位编码的过程与在标准Web开发环境中基本相同。以下是如何在Next.js中实现这一功能的简要步骤:
-
读取图片文件:首先,你需要获取图片文件。在Next.js中,这通常通过文件上传组件或直接从静态资源中读取来完成。
-
转换为Base64编码:使用JavaScript的
FileReader
API或Node.js的fs
模块(如果是服务器端渲染或API路由)来读取文件内容,并将其转换为Base64编码。示例代码(客户端):
const handleFileChange = (event) => { const file = event.target.files[0]; const reader = new FileReader(); reader.onloadend = () => { const base64String = reader.result.split(',')[1]; console.log(base64String); // 这是图片的Base64编码 }; reader.readAsDataURL(file); };
在服务器端(如API路由),你可以使用
fs
模块读取文件并使用Buffer
进行编码:import fs from 'fs'; const base64String = fs.readFileSync('path/to/image.jpg').toString('base64');
-
使用Base64编码:现在你可以将Base64编码的字符串用于你的Next.js应用中的任何需要图片数据的地方,比如作为
img
标签的src
属性。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,