B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 5|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROKÊÖ»úÊý¾Ý¿âMySQLÊý¾Ý¿â½ØÍ¼Æ¬ÅúÁ¿ÉÏ´«²Ù×÷½Å±¾

[¸´ÖÆÁ´½Ó]

1012

Ö÷Ìâ

1017

Ìû×Ó

7325

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7325
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷

AIWROKÊÖ»úÊý¾Ý¿âMySQLÊý¾Ý¿â½ØÍ¼Æ¬ÅúÁ¿ÉÏ´«²Ù×÷½Å±¾
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("ÕÒµ½¿ÉÓõIJâÊÔͼƬ: " + 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. */
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2025-12-30 00:28 , Processed in 0.213167 second(s), 34 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí