信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 243|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

[复制链接]

777

主题

861

帖子

5518

积分

积分
5518
跳转到指定楼层
宣传软件楼主
发表于 2025-12-29 09:43:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

资讯缩略图:

资讯发布日期:2025-12-29

资讯发布简介:AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

资讯关键词:AIWROK手机数据库MySQL数据库截图片批量上传操作脚本

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 b2b软件

AIWROK手机数据库MySQL数据库截图片批量上传操作脚本 b2b软件
  1. //🍎交流QQ群711841924群一,苹果内测群,528816639
  2. // AIWROK软件数据库图片批量上传操作脚本
  3. // 实现读取本地图片、转换为Base64、上传到数据库、以及从数据库还原图片的功能

  4. print.log("===== 数据库图片上传操作脚本开始 =====");

  5. var conn = null;
  6. var pstmt = null;

  7. /**
  8. * Java原生方法:将文件转换为Base64字符串
  9. */
  10. function fileToBase64(filePath) {
  11.     try {
  12.         var file = new java.io.File(filePath);
  13.         if (!file.exists()) {
  14.             return null;
  15.         }
  16.         
  17.         var fis = new java.io.FileInputStream(file);
  18.         var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
  19.         var bytesRead = 0;
  20.         var byteBuffer = [];
  21.         
  22.         while ((bytesRead = fis.read(buffer)) != -1) {
  23.             for (var i = 0; i < bytesRead; i++) {
  24.                 byteBuffer.push(buffer[i]);
  25.             }
  26.         }
  27.         
  28.         fis.close();
  29.         
  30.         var bytes = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, byteBuffer.length);
  31.         for (var i = 0; i < byteBuffer.length; i++) {
  32.             bytes[i] = byteBuffer[i];
  33.         }
  34.         
  35.         return android.util.Base64.encodeToString(bytes, android.util.Base64.NO_WRAP);
  36.     } catch (e) {
  37.         print.log("❌ 文件转Base64失败: " + e.message);
  38.         return null;
  39.     }
  40. }

  41. /**
  42. * Java原生方法:检查文件是否存在
  43. */
  44. function fileExists(filePath) {
  45.     return new java.io.File(filePath).exists();
  46. }

  47. /**
  48. * Java原生方法:获取文件大小
  49. */
  50. function fileLength(filePath) {
  51.     return new java.io.File(filePath).length();
  52. }

  53. /**
  54. * Java原生方法:获取文件名
  55. */
  56. function getFileName(filePath) {
  57.     return new java.io.File(filePath).getName();
  58. }

  59. /**
  60. * 连接数据库
  61. */
  62. function connectDatabase() {
  63.     try {
  64.         var url = "jdbc:mysql://38.12.31.15:3306/dddfguu";
  65.         var user = "dddfguu";
  66.         var password = "rAXyhnNkiNsChJ8e";
  67.         var params = "?useSSL=false&characterEncoding=utf8&connectTimeout=5000";
  68.         
  69.         print.log("正在连接数据库...");
  70.         conn = mysql.getConnection(url, user, password);
  71.         print.log("✅ 数据库连接成功");
  72.         return true;
  73.     } catch (e) {
  74.         print.log("❌ 数据库连接失败: " + e.message);
  75.         return false;
  76.     }
  77. }

  78. /**
  79. * 创建图片存储表
  80. */
  81. function createImageTable() {
  82.     try {
  83.         var sql = "CREATE TABLE IF NOT EXISTS images (" +
  84.                   "id INT AUTO_INCREMENT PRIMARY KEY, " +
  85.                   "name VARCHAR(255) NOT NULL, " +
  86.                   "path VARCHAR(500), " +
  87.                   "image_data LONGBLOB, " +
  88.                   "file_size INT, " +
  89.                   "image_width INT, " +
  90.                   "image_height INT, " +
  91.                   "mime_type VARCHAR(50), " +
  92.                   "created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP" +
  93.                   ")";
  94.         
  95.         var stmt = conn.createStatement();
  96.         stmt.execute(sql);
  97.         stmt.close();
  98.         
  99.         print.log("✅ 图片存储表创建成功(或已存在)");
  100.         return true;
  101.     } catch (e) {
  102.         print.log("❌ 创建图片表失败: " + e.message);
  103.         return false;
  104.     }
  105. }

  106. /**
  107. * 检查表是否存在并显示表结构
  108. */
  109. function checkTableStructure() {
  110.     try {
  111.         var sql = "SHOW TABLES LIKE 'images'";
  112.         var stmt = conn.createStatement();
  113.         var rs = stmt.executeQuery(sql);
  114.         
  115.         if (rs.next()) {
  116.             print.log("✅ 表 images 已存在");
  117.             rs.close();
  118.             stmt.close();
  119.             
  120.             // 显示表结构
  121.             sql = "DESCRIBE images";
  122.             stmt = conn.createStatement();
  123.             rs = stmt.executeQuery(sql);
  124.             
  125.             print.log("表 images 的字段结构:");
  126.             while (rs.next()) {
  127.                 var columnName = rs.getString(1);
  128.                 var columnType = rs.getString(2);
  129.                 print.log("  - " + columnName + ": " + columnType);
  130.             }
  131.             rs.close();
  132.             stmt.close();
  133.             return true;
  134.         } else {
  135.             print.log("❌ 表 images 不存在,需要先创建表");
  136.             rs.close();
  137.             stmt.close();
  138.             return false;
  139.         }
  140.     } catch (e) {
  141.         print.log("❌ 检查表结构失败: " + e.message);
  142.         return false;
  143.     }
  144. }

  145. /**
  146. * 获取图片文件信息
  147. */
  148. function getImageInfo(imagePath) {
  149.     try {
  150.         if (!fileExists(imagePath)) {
  151.             print.log("❌ 图片文件不存在: " + imagePath);
  152.             return null;
  153.         }
  154.         
  155.         var fileSize = fileLength(imagePath);
  156.         var fileName = getFileName(imagePath);
  157.         var extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
  158.         
  159.         var mimeType = "image/jpeg";
  160.         if (extension === "png") {
  161.             mimeType = "image/png";
  162.         } else if (extension === "gif") {
  163.             mimeType = "image/gif";
  164.         } else if (extension === "webp") {
  165.             mimeType = "image/webp";
  166.         }
  167.         
  168.         print.log("图片文件信息:");
  169.         print.log("  路径: " + imagePath);
  170.         print.log("  文件名: " + fileName);
  171.         print.log("  文件大小: " + (fileSize / 1024).toFixed(2) + " KB");
  172.         print.log("  MIME类型: " + mimeType);
  173.         
  174.         return {
  175.             path: imagePath,
  176.             name: fileName,
  177.             size: fileSize,
  178.             mimeType: mimeType
  179.         };
  180.     } catch (e) {
  181.         print.log("❌ 获取图片信息失败: " + e.message);
  182.         return null;
  183.     }
  184. }

  185. /**
  186. * 将本地图片上传到数据库
  187. * @param {String} imagePath - 图片本地路径
  188. * @param {String} imageName - 图片名称(可选,默认使用文件名)
  189. */
  190. function uploadImageToDatabase(imagePath, imageName) {
  191.     try {
  192.         var imageInfo = getImageInfo(imagePath);
  193.         if (!imageInfo) {
  194.             return false;
  195.         }
  196.         
  197.         var name = imageName || imageInfo.name;
  198.         
  199.         // 将图片文件转换为Base64字符串
  200.         print.log("正在将图片转换为Base64字符串...");
  201.         var base64Data = fileToBase64(imagePath);
  202.         
  203.         if (!base64Data) {
  204.             print.log("❌ 图片转Base64失败");
  205.             return false;
  206.         }
  207.         
  208.         print.log("✅ Base64字符串生成成功,长度: " + base64Data.length + " 字符");
  209.         
  210.         // 将Base64字符串转换为字节数组
  211.         // 格式: "data:image/jpeg;base64,..." 需要去除前缀
  212.         var base64Content = base64Data;
  213.         var prefix = "data:" + imageInfo.mimeType + ";base64,";
  214.         if (base64Data.indexOf(prefix) === 0) {
  215.             base64Content = base64Data.substring(prefix.length);
  216.         }
  217.         
  218.         // 使用预编译语句插入图片数据
  219.         var sql = "INSERT INTO images (name, path, image_data, file_size, mime_type) VALUES (?, ?, ?, ?, ?)";
  220.         pstmt = conn.prepareStatement(sql);
  221.         pstmt.setString(1, name);
  222.         pstmt.setString(2, imagePath);
  223.         
  224.         // 设置BLOB参数 - 使用setBytes方法
  225.         var bytes = android.util.Base64.decode(base64Content, android.util.Base64.NO_WRAP);
  226.         pstmt.setBytes(3, bytes);
  227.         
  228.         pstmt.setInt(4, imageInfo.size);
  229.         pstmt.setString(5, imageInfo.mimeType);
  230.         
  231.         var rowsAffected = pstmt.executeUpdate();
  232.         pstmt.close();
  233.         pstmt = null;
  234.         
  235.         if (rowsAffected > 0) {
  236.             print.log("✅ 图片 '" + name + "' 上传成功,影响行数: " + rowsAffected);
  237.             return true;
  238.         } else {
  239.             print.log("❌ 图片上传失败,影响行数为0");
  240.             return false;
  241.         }
  242.     } catch (e) {
  243.         print.log("❌ 上传图片到数据库失败: " + e.message);
  244.         if (pstmt) {
  245.             try { pstmt.close(); } catch(err) {}
  246.             pstmt = null;
  247.         }
  248.         return false;
  249.     }
  250. }

  251. /**
  252. * 从数据库下载图片并保存到本地
  253. * @param {Number} imageId - 数据库中的图片ID
  254. * @param {String} outputPath - 保存路径
  255. */
  256. function downloadImageFromDatabase(imageId, outputPath) {
  257.     try {
  258.         var sql = "SELECT name, image_data, mime_type FROM images WHERE id = ?";
  259.         pstmt = conn.prepareStatement(sql);
  260.         pstmt.setInt(1, imageId);
  261.         
  262.         var rs = pstmt.executeQuery();
  263.         
  264.         if (rs.next()) {
  265.             var name = rs.getString("name");
  266.             var imageData = rs.getBytes("image_data");
  267.             var mimeType = rs.getString("mime_type");
  268.             
  269.             // 将字节数组转换为Base64字符串
  270.             var base64Content = android.util.Base64.encodeToString(imageData, android.util.Base64.NO_WRAP);
  271.             
  272.             // 添加Base64前缀
  273.             var prefix = "data:" + mimeType + ";base64,";
  274.             var base64WithPrefix = prefix + base64Content;
  275.             
  276.             // 使用 new image().readBase64() 和 save() 保存为文件
  277.             var imageObj = new image();
  278.             imageObj.readBase64(base64WithPrefix);
  279.             imageObj.save(outputPath);
  280.             
  281.             print.log("✅ 图片下载成功: " + outputPath);
  282.             print.log("  图片名称: " + name);
  283.             print.log("  MIME类型: " + mimeType);
  284.             print.log("  文件大小: " + (imageData.length / 1024).toFixed(2) + " KB");
  285.             
  286.             rs.close();
  287.             pstmt.close();
  288.             pstmt = null;
  289.             
  290.             return true;
  291.         } else {
  292.             print.log("❌ 未找到ID为 " + imageId + " 的图片");
  293.             rs.close();
  294.             pstmt.close();
  295.             pstmt = null;
  296.             return false;
  297.         }
  298.     } catch (e) {
  299.         print.log("❌ 从数据库下载图片失败: " + e.message);
  300.         if (pstmt) {
  301.             try { pstmt.close(); } catch(err) {}
  302.             pstmt = null;
  303.         }
  304.         return false;
  305.     }
  306. }

  307. /**
  308. * 查询数据库中所有图片信息
  309. */
  310. function queryAllImages() {
  311.     try {
  312.         var sql = "SELECT id, name, path, file_size, mime_type, created_at FROM images ORDER BY id";
  313.         var stmt = conn.createStatement();
  314.         var rs = stmt.executeQuery(sql);
  315.         
  316.         print.log("数据库中的图片列表:");
  317.         var count = 0;
  318.         
  319.         while (rs.next()) {
  320.             count++;
  321.             var id = rs.getInt("id");
  322.             var name = rs.getString("name");
  323.             var path = rs.getString("path");
  324.             var fileSize = rs.getInt("file_size");
  325.             var mimeType = rs.getString("mime_type");
  326.             var createdAt = rs.getString("created_at");
  327.             
  328.             print.log("  [" + id + "] " + name);
  329.             print.log("      大小: " + (fileSize / 1024).toFixed(2) + " KB");
  330.             print.log("      类型: " + mimeType);
  331.             print.log("      创建时间: " + createdAt);
  332.         }
  333.         
  334.         rs.close();
  335.         stmt.close();
  336.         
  337.         if (count === 0) {
  338.             print.log("  数据库中没有图片记录");
  339.         } else {
  340.             print.log("  共 " + count + " 张图片");
  341.         }
  342.         
  343.         return true;
  344.     } catch (e) {
  345.         print.log("❌ 查询图片列表失败: " + e.message);
  346.         return false;
  347.     }
  348. }

  349. /**
  350. * 根据ID删除图片
  351. */
  352. function deleteImageFromDatabase(imageId) {
  353.     try {
  354.         var sql = "DELETE FROM images WHERE id = ?";
  355.         pstmt = conn.prepareStatement(sql);
  356.         pstmt.setInt(1, imageId);
  357.         
  358.         var rowsAffected = pstmt.executeUpdate();
  359.         pstmt.close();
  360.         pstmt = null;
  361.         
  362.         if (rowsAffected > 0) {
  363.             print.log("✅ 成功删除ID为 " + imageId + " 的图片,影响行数: " + rowsAffected);
  364.             return true;
  365.         } else {
  366.             print.log("❌ 未找到ID为 " + imageId + " 的图片");
  367.             return false;
  368.         }
  369.     } catch (e) {
  370.         print.log("❌ 删除图片失败: " + e.message);
  371.         if (pstmt) {
  372.             try { pstmt.close(); } catch(err) {}
  373.             pstmt = null;
  374.         }
  375.         return false;
  376.     }
  377. }

  378. /**
  379. * 实时截图并上传到数据库
  380. * @param {String} imageName - 图片名称(可选)
  381. * @returns {Boolean} 是否成功
  382. */
  383. function screenshotAndUpload(imageName) {
  384.     try {
  385.         print.log("\n===== 实时截图并上传 =====");
  386.         
  387.         // 1. 截图
  388.         print.log("正在截取屏幕...");
  389.         var screenshot = screen.screenShotFull();
  390.         
  391.         if (!screenshot) {
  392.             print.log("❌ 截图失败");
  393.             return false;
  394.         }
  395.         
  396.         print.log("✅ 截图成功");
  397.         
  398.         // 2. 生成本地保存路径
  399.         var timestamp = new java.util.Date().getTime();
  400.         var localPath = "/sdcard/screenshot_" + timestamp + ".jpg";
  401.         
  402.         // 3. 保存到本地
  403.         print.log("正在保存截图到本地: " + localPath);
  404.         screenshot.save(localPath);
  405.         
  406.         if (!fileExists(localPath)) {
  407.             print.log("❌ 本地保存失败");
  408.             return false;
  409.         }
  410.         
  411.         print.log("✅ 本地保存成功");
  412.         
  413.         // 4. 上传到数据库
  414.         var name = imageName || "截图_" + timestamp;
  415.         print.log("正在上传到数据库: " + name);
  416.         
  417.         var uploadResult = uploadImageToDatabase(localPath, name);
  418.         
  419.         if (uploadResult) {
  420.             print.log("✅ 实时截图上传成功!");
  421.             return true;
  422.         } else {
  423.             print.log("❌ 数据库上传失败,但本地图片已保存");
  424.             return false;
  425.         }
  426.     } catch (e) {
  427.         print.log("❌ 实时截图上传失败: " + e.message);
  428.         return false;
  429.     }
  430. }

  431. /**
  432. * 定时截图并上传(循环执行)
  433. * @param {Number} intervalSeconds - 间隔秒数
  434. * @param {Number} maxCount - 最大执行次数(0表示无限循环)
  435. */
  436. function autoScreenshotUpload(intervalSeconds, maxCount) {
  437.     try {
  438.         print.log("\n===== 启动定时截图上传 =====");
  439.         print.log("间隔: " + intervalSeconds + " 秒");
  440.         print.log("最大次数: " + (maxCount === 0 ? "无限" : maxCount));
  441.         
  442.         var count = 0;
  443.         
  444.         while (maxCount === 0 || count < maxCount) {
  445.             count++;
  446.             print.log("\n--- 第 " + count + " 次截图 ---");
  447.             
  448.             var result = screenshotAndUpload("定时截图_" + count);
  449.             
  450.             if (result) {
  451.                 print.log("✅ 第 " + count + " 次成功");
  452.             } else {
  453.                 print.log("❌ 第 " + count + " 次失败");
  454.             }
  455.             
  456.             // 等待间隔(不包括最后一次)
  457.             if (maxCount === 0 || count < maxCount) {
  458.                 print.log("等待 " + intervalSeconds + " 秒后进行下一次截图...");
  459.                 sleep(intervalSeconds * 1000);
  460.             }
  461.         }
  462.         
  463.         print.log("\n===== 定时截图任务完成 =====");
  464.         print.log("共执行 " + count + " 次截图上传");
  465.         return true;
  466.     } catch (e) {
  467.         print.log("❌ 定时截图任务失败: " + e.message);
  468.         return false;
  469.     }
  470. }

  471. /**
  472. * 截图并获取Base64数据(不上传,用于预览等)
  473. * @returns {String} Base64字符串,失败返回null
  474. */
  475. function screenshotToBase64() {
  476.     try {
  477.         print.log("\n===== 截图并获取Base64 =====");
  478.         
  479.         // 1. 截图
  480.         var screenshot = screen.screenShotFull();
  481.         if (!screenshot) {
  482.             print.log("❌ 截图失败");
  483.             return null;
  484.         }
  485.         
  486.         // 2. 转为Base64
  487.         var base64Data = screenshot.toBase64();
  488.         
  489.         if (base64Data) {
  490.             print.log("✅ Base64数据获取成功,长度: " + base64Data.length + " 字符");
  491.             print.log("  前缀: " + base64Data.substring(0, 50) + "...");
  492.             return base64Data;
  493.         } else {
  494.             print.log("❌ Base64转换失败");
  495.             return null;
  496.         }
  497.     } catch (e) {
  498.         print.log("❌ 截图转Base64失败: " + e.message);
  499.         return null;
  500.     }
  501. }

  502. /**
  503. * 关闭数据库连接
  504. */
  505. function closeConnection() {
  506.     try {
  507.         if (pstmt != null) {
  508.             pstmt.close();
  509.             pstmt = null;
  510.         }
  511.         if (conn != null) {
  512.             conn.close();
  513.         }
  514.         print.log("✅ 数据库连接已关闭");
  515.     } catch (e) {
  516.         print.log("❌ 关闭连接时出错: " + e.message);
  517.     }
  518. }

  519. // 主程序执行流程
  520. try {
  521.     // 1. 连接数据库
  522.     if (!connectDatabase()) {
  523.         throw new Error("数据库连接失败");
  524.     }
  525.    
  526.     // 2. 检查表是否存在,不存在则创建
  527.     if (!checkTableStructure()) {
  528.         print.log("正在创建图片存储表...");
  529.         if (!createImageTable()) {
  530.             throw new Error("创建图片表失败");
  531.         }
  532.     }
  533.    
  534.     // ========== 方式1:上传本地已有图片 ==========
  535.     print.log("\n===== 方式1:上传本地图片 =====");
  536.    
  537.     // 常见的手机图片路径示例
  538.     var sampleImagePaths = [
  539.         "/sdcard/DCIM/Camera/photo_001.jpg",
  540.         "/sdcard/Pictures/Screenshots/screenshot_001.png",
  541.         "/sdcard/Download/image_001.jpg"
  542.     ];
  543.    
  544.     // 使用第一个存在的图片路径
  545.     var uploadPath = null;
  546.     for (var i = 0; i < sampleImagePaths.length; i++) {
  547.         var testPath = sampleImagePaths[i];
  548.         if (new java.io.File(testPath).exists()) {
  549.             uploadPath = testPath;
  550.             print.log("找到可用的测试图片: " + uploadPath);
  551.             break;
  552.         }
  553.     }
  554.    
  555.     if (uploadPath) {
  556.         // 上传找到的图片
  557.         uploadImageToDatabase(uploadPath, "本地测试图片_" + new java.util.Date().getTime());
  558.     } else {
  559.         print.log("⚠️ 未找到测试图片,请确保以下路径有图片文件:");
  560.         for (var j = 0; j < sampleImagePaths.length; j++) {
  561.             print.log("  - " + sampleImagePaths[j]);
  562.         }
  563.     }
  564.    
  565.     // ========== 方式2:实时截图并上传 ==========
  566.     print.log("\n===== 方式2:实时截图并上传 =====");
  567.    
  568.     // 立即截图并上传
  569.     var screenshotResult = screenshotAndUpload("实时截图测试");
  570.    
  571.     // ========== 方式3:定时截图上传(可选) ==========
  572.     // 如果需要定时截图,请取消注释以下代码:
  573.     // autoScreenshotUpload(5, 3);  // 每5秒截图一次,共3次
  574.    
  575.     // 4. 查询所有图片
  576.     print.log("\n===== 查询数据库中的图片 =====");
  577.     queryAllImages();
  578.    
  579.     // 5. 下载最新图片
  580.     print.log("\n===== 从数据库下载最新图片 =====");
  581.     // 查找最新的图片ID
  582.     var latestImageId = 0;
  583.     try {
  584.         var sql = "SELECT MAX(id) as max_id FROM images";
  585.         var stmt = conn.createStatement();
  586.         var rs = stmt.executeQuery(sql);
  587.         if (rs.next()) {
  588.             latestImageId = rs.getInt("max_id");
  589.         }
  590.         rs.close();
  591.         stmt.close();
  592.         
  593.         if (latestImageId > 0) {
  594.             var downloadPath = "/sdcard/downloaded_image_" + latestImageId + ".jpg";
  595.             downloadImageFromDatabase(latestImageId, downloadPath);
  596.             
  597.             // 6. 截图转Base64演示
  598.             print.log("\n===== 截图转Base64演示 =====");
  599.             var base64Data = screenshotToBase64();
  600.             if (base64Data) {
  601.                 print.log("✅ Base64可用于H5界面显示、网络传输等");
  602.             }
  603.             
  604.             // 7. 删除图片演示(取消注释可删除)
  605.             // print.log("\n===== 删除图片演示 =====");
  606.             // deleteImageFromDatabase(latestImageId);
  607.             // print.log("已删除ID为 " + latestImageId + " 的图片");
  608.         }
  609.     } catch (e) {
  610.         print.log("⚠️ 演示下载功能时出错: " + e.message);
  611.     }
  612.    
  613.     // 8. 再次查询确认
  614.     print.log("\n===== 最终图片列表 =====");
  615.     queryAllImages();
  616.    
  617. } catch (e) {
  618.     print.log("❌ 程序执行过程中发生错误: " + e.message);
  619. } finally {
  620.     // 确保连接被关闭
  621.     closeConnection();
  622. }

  623. print.log("===== 数据库图片上传操作脚本结束 =====");

  624. /**
  625. * &#128161; 使用说明:
  626. *
  627. * 1. 图片存储原理:
  628. *    - 使用 MySQL 的 LONGBLOB 类型存储二进制图片数据
  629. *    - 将图片文件转为 Base64 字符串,再转为字节数组存入数据库
  630. *
  631. * 2. 上传流程:
  632. *    - file.fileToBase64(path) → 获取图片Base64字符串
  633. *    - android.util.Base64.decode() → Base64转字节数组
  634. *    - prepareStatement.setBytes() → 存入数据库
  635. *
  636. * 3. 下载流程:
  637. *    - rs.getBytes() → 从数据库读取字节数组
  638. *    - android.util.Base64.encodeToString() → 字节数组转Base64
  639. *    - file.base64ToFile() → 保存为图片文件
  640. *
  641. * 4. 适用场景:
  642. *    - 用户头像存储
  643. *    - 商品图片管理
  644. *    - 截图自动备份
  645. *    - 图片数据迁移
  646. */
复制代码








untoHID中文输入智能打字功能nextJS巧妙地组合使用各种条件语句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-10 05:30 , Processed in 0.397397 second(s), 52 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表