B2BÍøÂçÈí¼þ

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

AIWROKÈí¼þ½Å±¾GETÏÂÔØÎļþ²¢¼ì²â0KB¹¤¾ß

[¸´ÖÆÁ´½Ó]

1101

Ö÷Ìâ

1106

Ìû×Ó

7681

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

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

AIWROKÈí¼þ½Å±¾GETÏÂÔØÎļþ²¢¼ì²â0KB¹¤¾ß
AIWROKÈí¼þ½Å±¾GETÏÂÔØÎļþ²¢¼ì²â0KB¹¤¾ß B2BÍøÂçÈí¼þ

  1. // ============================================================================
  2. // GETÏÂÔØÎļþ²¢¼ì²â0KB¹¤¾ß
  3. // AIWROK¹Ù·½Èº: 711841924£¬Æ»¹ûȺ£¬528816639
  4. // ============================================================================
  5. // ¹¦ÄÜ˵Ã÷£º
  6. // 1. downloadFile() - GETÇëÇóÏÂÔØÍ¼Æ¬Îļþ£¬×Ô¶¯¼ì²âContent-TypeºÍ0KB¿ÕÎļþ
  7. // 2. uploadFile() - POST multipart/form-data·½Ê½ÉÏ´«Îļþµ½·þÎñÆ÷
  8. // 3. downloadWithResume() - Ö§³Ö¶ÏµãÐø´«µÄÏÂÔØ¹¦ÄÜ£¬¿É´ÓÖжϴ¦¼ÌÐøÏÂÔØ
  9. // 4. batchDownload() - ÅúÁ¿ÏÂÔØ¹ÜÀíÆ÷£¬Í³¼Æ³É¹¦/ʧ°ÜÊýÁ¿ºÍ×ÜÎļþ´óС
  10. //
  11. // ʹÓó¡¾°£º
  12. // - ͼƬ×ÊÔ´ÅúÁ¿ÏÂÔØºÍÑéÖ¤
  13. // - ´óÎļþ¶ÏµãÐø´«ÏÂÔØ
  14. // - ÎļþÉÏ´«µ½Ô¶³Ì·þÎñÆ÷
  15. // - ×Ô¶¯»¯²âÊÔÖеÄÎļþ²Ù×÷ÑéÖ¤
  16. // ============================================================================

  17. /**
  18. * ¼ì²âÊÇ·ñΪÓÐЧµÄͼƬContent-Type
  19. * @param {String} contentType - HTTPÏìÓ¦µÄContent-TypeÍ·²¿Öµ
  20. * @returns {Boolean} ÊÇ·ñΪÓÐЧµÄͼƬÀàÐÍ(png/jpeg/jpg/gif/webp)
  21. */
  22. function isValidImageContentType(contentType) {
  23.     if (!contentType) return false;
  24.     contentType = contentType.toLowerCase();
  25.     return contentType.indexOf("image/png") !== -1 ||
  26.            contentType.indexOf("image/jpeg") !== -1 ||
  27.            contentType.indexOf("image/jpg") !== -1 ||
  28.            contentType.indexOf("image/gif") !== -1 ||
  29.            contentType.indexOf("image/webp") !== -1;
  30. }

  31. /**
  32. * GETÇëÇóÏÂÔØÎļþ²¢¼ì²â0KBºÍÊÇ·ñΪÓÐЧͼƬ
  33. *
  34. * ¹¤×÷Á÷³Ì£º
  35. * 1. ·¢ÆðGETÇëÇó»ñÈ¡ÎļþÄÚÈÝ
  36. * 2. ¼ì²éContent-TypeÊÇ·ñΪÓÐЧͼƬ¸ñʽ
  37. * 3. ½«ÏìÓ¦Êý¾ÝдÈë±¾µØÎļþ
  38. * 4. ÑéÖ¤Îļþ´óС£¬¾Ü¾ø0KB¿ÕÎļþ
  39. *
  40. * @param {String} url - ÏÂÔØµØÖ·£¨±ØÐëÊÇÓÐЧµÄͼƬURL£©
  41. * @param {String} savePath - ±¾µØ±£´æÂ·¾¶£¨Èç/sdcard/Download/test.png£©
  42. * @returns {Boolean} ÊÇ·ñ³É¹¦ÏÂÔØÇÒÎļþÓÐЧ£¨true=³É¹¦£¬false=ʧ°Ü£©
  43. *
  44. * ʾÀý£º
  45. * var result = downloadFile("https://example.com/image.png", "/sdcard/test.png");
  46. * if (result) {
  47. *     printl("ÏÂÔØ³É¹¦£¡");
  48. * }
  49. */
  50. function downloadFile(url, savePath) {
  51.     var http = new okHttp();
  52.     var response = http.get(url);
  53.    
  54.     var contentType = http.getResponseHeaders();
  55.     printl("Content-Type: " + contentType);
  56.    
  57.     if (!isValidImageContentType(contentType)) {
  58.         printl("⚠️ ²»ÊÇÓÐЧµÄͼƬÀàÐÍ: " + contentType);
  59.         return false;
  60.     }
  61.    
  62.     var file = new java.io.File(savePath);
  63.     var fos = new java.io.FileOutputStream(file);
  64.     fos.write(response.getBytes());
  65.     fos.close();
  66.    
  67.     var fileSize = file.length();
  68.     printl("Îļþ´óС: " + fileSize + " ×Ö½Ú");
  69.    
  70.     if (fileSize === 0) {
  71.         printl("⚠️ 0KBÎļþ: " + savePath);
  72.         return false;
  73.     }
  74.    
  75.     printl("✅ ÎļþÓÐЧ: " + (fileSize / 1024).toFixed(2) + " KB");
  76.     return true;
  77. }

  78. // µ¥¶À²âÊÔ0KB¼ì²â - ´´½¨Ò»¸ö0KBµÄ¿ÕÎļþ
  79. printl("=== ²âÊÔ0KB¼ì²â ===");
  80. var emptyFile = new java.io.File("/sdcard/Download/test_0kb.png");
  81. var fos = new java.io.FileOutputStream(emptyFile);
  82. fos.write(new java.lang.String("").getBytes());
  83. fos.close();
  84. printl("´´½¨ÁË0KB¿ÕÎļþ: " + emptyFile.getPath());
  85. printl("¿ÕÎļþ´óС: " + emptyFile.length() + " ×Ö½Ú");

  86. if (emptyFile.length() === 0) {
  87.     printl("✅ 0KB¼ì²âÕý³££¡ÎļþȷʵÊÇ0×Ö½Ú");
  88. } else {
  89.     printl("❌ 0KB¼ì²âÒì³££¡Îļþ²»ÊÇ0×Ö½Ú");
  90. }

  91. printl("");

  92. // ʹÓÃʾÀý - ²âÊÔ²»´æÔÚµÄÁ´½Ó
  93. var url1 = "https://www.baidu.com/img/PCfb_5bf088c07f842ccde3f97245555553ea.png";
  94. var savePath1 = "/sdcard/Download/test_not_exist.png";

  95. printl("=== ²âÊÔ²»´æÔÚµÄÁ´½Ó ===");
  96. printl("URL: " + url1);
  97. var result1 = downloadFile(url1, savePath1);
  98. printl("½á¹û: " + (result1 ? "³É¹¦" : "ʧ°Ü"));

  99. printl("");

  100. // ʹÓÃʾÀý - ²âÊÔ´æÔÚµÄÁ´½Ó
  101. var url2 = "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png";
  102. var savePath2 = "/sdcard/Download/test_exist.png";

  103. printl("=== ²âÊÔ´æÔÚµÄÁ´½Ó ===");
  104. printl("URL: " + url2);
  105. var result2 = downloadFile(url2, savePath2);
  106. printl("½á¹û: " + (result2 ? "³É¹¦" : "ʧ°Ü"));

  107. /**
  108. * POSTÇëÇóÉÏ´«Îļþ²¢ÑéÖ¤ÏìÓ¦
  109. *
  110. * ¹¤×÷Á÷³Ì£º
  111. * 1. ¼ì²é±¾µØÎļþÊÇ·ñ´æÔÚ
  112. * 2. ¹¹½¨multipart/form-data¸ñʽµÄHTTPÇëÇóÌå
  113. * 3. ¶ÁÈ¡ÎļþÄÚÈݲ¢¸½¼Óµ½ÇëÇóÖÐ
  114. * 4. ·¢ËÍPOSTÇëÇóµ½·þÎñÆ÷
  115. * 5. ¸ù¾ÝHTTP״̬ÂëÅжÏÉÏ´«ÊÇ·ñ³É¹¦£¨2xxΪ³É¹¦£©
  116. *
  117. * @param {String} uploadUrl - ÉÏ´«½Ó¿ÚµØÖ·£¨Èçhttp://example.com/upload£©
  118. * @param {String} filePath - ÒªÉÏ´«µÄ±¾µØÎļþÍêÕû·¾¶
  119. * @param {String} fieldName - ±íµ¥×Ö¶ÎÃû³Æ£¨·þÎñ¶Ë½ÓÊÕÎļþµÄ×Ö¶ÎÃû£©
  120. * @returns {Boolean} ÊÇ·ñ³É¹¦ÉÏ´«£¨true=³É¹¦£¬false=ʧ°Ü£©
  121. *
  122. * ʾÀý£º
  123. * var success = uploadFile(
  124. *     "http://api.example.com/upload",
  125. *     "/sdcard/photo.jpg",
  126. *     "file"
  127. * );
  128. */
  129. function uploadFile(uploadUrl, filePath, fieldName) {
  130.     var http = new okHttp();
  131.     var file = new java.io.File(filePath);
  132.    
  133.     if (!file.exists()) {
  134.         printl("❌ Îļþ²»´æÔÚ: " + filePath);
  135.         return false;
  136.     }
  137.    
  138.     var fileSize = file.length();
  139.     printl("Îļþ´óС: " + (fileSize / 1024).toFixed(2) + " KB");
  140.    
  141.     // ¹¹½¨multipartÇëÇó
  142.     var boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
  143.     var requestBody = "--" + boundary + "\r\n" +
  144.                      "Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + file.getName() + "\"\r\n" +
  145.                      "Content-Type: application/octet-stream\r\n\r\n";
  146.    
  147.     // ¶ÁÈ¡ÎļþÄÚÈÝ
  148.     var fis = new java.io.FileInputStream(file);
  149.     var buffer = new byte[1024];
  150.     var bytesRead;
  151.     while ((bytesRead = fis.read(buffer)) !== -1) {
  152.         requestBody += new java.lang.String(buffer, 0, bytesRead);
  153.     }
  154.     fis.close();
  155.    
  156.     requestBody += "\r\n--" + boundary + "--\r\n";
  157.    
  158.     // ÉèÖÃÇëÇóÍ·
  159.     http.setHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
  160.    
  161.     var response = http.post(uploadUrl, requestBody);
  162.     var statusCode = http.getStatusCode();
  163.    
  164.     printl("HTTP״̬Âë: " + statusCode);
  165.     printl("ÏìÓ¦ÄÚÈÝ: " + response.substring(0, Math.min(response.length(), 200)));
  166.    
  167.     return statusCode >= 200 && statusCode < 300;
  168. }

  169. /**
  170. * ¶ÏµãÐø´«ÏÂÔØ¹¦ÄÜ
  171. *
  172. * ¹¤×÷Á÷³Ì£º
  173. * 1. ¼ì²éÄ¿±êÎļþÊÇ·ñÒÑ´æÔÚ£¨Ö®Ç°ÏÂÔØµÄ²¿·Ö£©
  174. * 2. Èç¹û´æÔÚ£¬»ñÈ¡ÒÑÏÂÔØµÄ´óС²¢ÉèÖÃRangeÇëÇóÍ·
  175. * 3. ·¢Æð´øRangeÍ·µÄGETÇëÇó£¨HTTP 206 Partial Content£©
  176. * 4. ÒÔ×·¼ÓģʽдÈëÎļþ£¨±£ÁôÒÑÓÐÄÚÈÝ£©
  177. * 5. ÑéÖ¤×îÖÕÎļþ´óС
  178. *
  179. * ÓÅÊÆ£º
  180. * - ÍøÂçÖжϺó¿É´Ó¶Ïµã¼ÌÐø£¬ÎÞÐèÖØÐÂÏÂÔØ
  181. * - ½ÚÊ¡Á÷Á¿ºÍʱ¼ä£¬ÌرðÊʺϴóÎļþ
  182. * - ×Ô¶¯¼ì²âºÍ´¦Àí²¿·ÖÏÂÔØµÄÎļþ
  183. *
  184. * @param {String} url - ÏÂÔØµØÖ·£¨·þÎñÆ÷ÐèÖ§³ÖRangeÇëÇó£©
  185. * @param {String} savePath - ±¾µØ±£´æÂ·¾¶
  186. * @returns {Boolean} ÊÇ·ñ³É¹¦ÏÂÔØ£¨true=³É¹¦£¬false=ʧ°Ü£©
  187. *
  188. * ʾÀý£º
  189. * // µÚÒ»´ÎÏÂÔØÖжϺó£¬Ôٴε÷Óûá¼ÌÐøÏÂÔØ
  190. * downloadWithResume("http://example.com/largefile.zip", "/sdcard/file.zip");
  191. */
  192. function downloadWithResume(url, savePath) {
  193.     var http = new okHttp();
  194.     var file = new java.io.File(savePath);
  195.     var existingSize = 0;
  196.    
  197.     // ¼ì²éÊÇ·ñÓÐÒÑÏÂÔØµÄ²¿·ÖÎļþ
  198.     if (file.exists()) {
  199.         existingSize = file.length();
  200.         printl("·¢ÏÖÒÑÏÂÔØ²¿·Ö: " + (existingSize / 1024).toFixed(2) + " KB");
  201.         http.setHeader("Range", "bytes=" + existingSize + "-");
  202.     }
  203.    
  204.     var response = http.get(url);
  205.     var statusCode = http.getStatusCode();
  206.    
  207.     if (statusCode === 206 || (statusCode === 200 && existingSize === 0)) {
  208.         var fos;
  209.         if (existingSize > 0) {
  210.             fos = new java.io.FileOutputStream(file, true); // ×·¼Óģʽ
  211.         } else {
  212.             fos = new java.io.FileOutputStream(file);
  213.         }
  214.         
  215.         fos.write(response.getBytes());
  216.         fos.close();
  217.         
  218.         var finalSize = file.length();
  219.         printl("✅ ÏÂÔØÍê³É£¬×Ü´óС: " + (finalSize / 1024).toFixed(2) + " KB");
  220.         return true;
  221.     } else {
  222.         printl("❌ ÏÂÔØÊ§°Ü£¬×´Ì¬Âë: " + statusCode);
  223.         return false;
  224.     }
  225. }

  226. /**
  227. * ÅúÁ¿ÏÂÔØÎļþ²¢Í³¼Æ½á¹û
  228. *
  229. * ¹¤×÷Á÷³Ì£º
  230. * 1. ±éÀúÏÂÔØÈÎÎñÁбí
  231. * 2. ¶Ôÿ¸öÈÎÎñµ÷ÓÃdownloadFile()½øÐÐÏÂÔØ
  232. * 3. ¼Ç¼³É¹¦/ʧ°ÜÊýÁ¿ºÍÀÛ¼ÆÎļþ´óС
  233. * 4. Êä³öÏêϸµÄÏÂÔØ½ø¶ÈºÍͳ¼ÆÐÅÏ¢
  234. * 5. ·µ»ØÍ³¼Æ½á¹û¶ÔÏó
  235. *
  236. * ÌØµã£º
  237. * - ×Ô¶¯Í³¼ÆÏÂÔØ³É¹¦ÂÊ
  238. * - ¼ÆËã×ÜÏÂÔØÎļþ´óС
  239. * - ÌṩÏêϸµÄÈÕÖ¾Êä³ö
  240. * - µ¥¸öÎļþʧ°Ü²»Ó°ÏìÆäËûÎļþÏÂÔØ
  241. *
  242. * @param {Array} downloadList - ÏÂÔØÈÎÎñÊý×飬ÿÏî°üº¬£º
  243. *   - url: String - ÎļþÏÂÔØµØÖ·
  244. *   - path: String - ±¾µØ±£´æÂ·¾¶
  245. * @returns {Object} ͳ¼Æ½á¹û¶ÔÏó£º
  246. *   - success: Number - ³É¹¦ÏÂÔØµÄÎļþÊýÁ¿
  247. *   - failed: Number - ʧ°ÜµÄÎļþÊýÁ¿
  248. *   - totalSize: Number - ËùÓгɹ¦ÎļþµÄ×Ü×Ö½ÚÊý
  249. *
  250. * ʾÀý£º
  251. * var tasks = [
  252. *     {url: "http://example.com/img1.png", path: "/sdcard/img1.png"},
  253. *     {url: "http://example.com/img2.png", path: "/sdcard/img2.png"}
  254. * ];
  255. * var result = batchDownload(tasks);
  256. * printl("³É¹¦ÂÊ: " + (result.success / (result.success + result.failed) * 100) + "%");
  257. */
  258. function batchDownload(downloadList) {
  259.     var successCount = 0;
  260.     var failCount = 0;
  261.     var totalSize = 0;
  262.    
  263.     printl("=== ¿ªÊ¼ÅúÁ¿ÏÂÔØ ===");
  264.     printl("×ܹ²ÐèÒªÏÂÔØ: " + downloadList.length + " ¸öÎļþ");
  265.    
  266.     for (var i = 0; i < downloadList.length; i++) {
  267.         var item = downloadList[i];
  268.         printl("\n--- ÏÂÔØµÚ " + (i + 1) + " ¸öÎļþ ---");
  269.         printl("URL: " + item.url);
  270.         printl("±£´æÂ·¾¶: " + item.path);
  271.         
  272.         var result = downloadFile(item.url, item.path);
  273.         if (result) {
  274.             successCount++;
  275.             var fileSize = new java.io.File(item.path).length();
  276.             totalSize += fileSize;
  277.         } else {
  278.             failCount++;
  279.         }
  280.     }
  281.    
  282.     printl("\n=== ÅúÁ¿ÏÂÔØÍê³É ===");
  283.     printl("³É¹¦: " + successCount + " ¸ö");
  284.     printl("ʧ°Ü: " + failCount + " ¸ö");
  285.     printl("×Ü´óС: " + (totalSize / 1024 / 1024).toFixed(2) + " MB");
  286.    
  287.     return {
  288.         success: successCount,
  289.         failed: failCount,
  290.         totalSize: totalSize
  291.     };
  292. }

  293. // ʹÓÃʾÀý - ÅúÁ¿ÏÂÔØ²âÊÔ
  294. printl("\n=== ÅúÁ¿ÏÂÔØÊ¾Àý ===");
  295. var downloadTasks = [
  296.     {
  297.         url: "https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png",
  298.         path: "/sdcard/Download/batch_test_1.png"
  299.     },
  300.     {
  301.         url: "https://httpbin.org/image/png",
  302.         path: "/sdcard/Download/batch_test_2.png"
  303.     }
  304. ];

  305. var batchResult = batchDownload(downloadTasks);
  306. printl("ÅúÁ¿ÏÂÔØÍ³¼Æ: " + JSON.stringify(batchResult));
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

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

¹Ø±Õ

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

map2

GMT+8, 2026-5-26 07:50 , Processed in 0.402925 second(s), 36 queries .

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