{"id":4502,"date":"2023-09-10T12:17:29","date_gmt":"2023-09-10T03:17:29","guid":{"rendered":"http:\/\/attacktube.com\/?p=4502"},"modified":"2023-09-10T15:32:23","modified_gmt":"2023-09-10T06:32:23","slug":"%e3%80%90javascript%e3%80%91%e7%94%bb%e5%83%8f%e3%82%92blob%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%81%ab%e5%a4%89%e6%8f%9b%e5%be%8c%e3%81%abblob-url%e3%82%92%e7%94%9f%e6%88%90-2","status":"publish","type":"post","link":"https:\/\/attacktube.com\/?p=4502","title":{"rendered":"\u3010JavaScript\u3011\u753b\u50cf\u3092Blob\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b(\u305d\u306e2)\u3010\u4e2d\u7d1a\u8005\u3011"},"content":{"rendered":"\n<p>\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u753b\u50cf\u3092Blob\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b(\u305d\u306e2)\u3002<br><br>\u3053\u306e\u30b3\u30fc\u30c9\u306f\u6b21\u306e\u95a2\u6570\u7b49\u3092\u5b66\u7fd2\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3067\u3042\u308b\u3002<br>new Blob()\u3067\u65b0\u3057\u3044Blob\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210<br>URL.createObjectURL()\u95a2\u6570<br>URL.revokeObjectURL()\u95a2\u6570<br>async\/await \u975e\u540c\u671f\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3092\u884c\u3046\u305f\u3081\u306e\u69cb\u6587<br>readAsArrayBuffer\u30e1\u30bd\u30c3\u30c9\u3067file\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8aad\u307f\u8fbc\u3080\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<br>\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-3461056110605997\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-3461056110605997\" data-ad-slot=\"3137443461\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n<br>\n\n\n\n<p>(2-1)\u30d5\u30a1\u30a4\u30eb\u30921\u5ea6\u306b\u8aad\u307f\u8fbc\u3080\u5834\u5408<\/p>\n\n\n\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n\n&lt;head&gt;\n\n  &lt;meta charset=&quot;utf-8&quot;&gt;\n  &lt;title&gt;sample&lt;\/title&gt;\n\n  &lt;style&gt;\n  &lt;\/style&gt;\n\n&lt;\/head&gt;\n\n&lt;body&gt;\n\n  \u753b\u50cf\u3092 Blob \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b(\u305d\u306e2-1)\u3002&lt;br&gt;\n  &lt;br&gt;\n\n  &lt;form id=&#039;fileInfo&#039;&gt;\n    &lt;input type=&#039;file&#039; id=&#039;fileInput&#039; multiple name=&#039;files&#039;&gt;\n  &lt;\/form&gt;\n\n  &lt;br&gt;\n\n  &lt;button id=&quot;button&quot;&gt;\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u3080&lt;\/button&gt;\n\n  &lt;br&gt;\n\n  &lt;br&gt;\n\n  &lt;div id=&quot;test&quot;&gt;\n  &lt;\/div&gt;\n\n  &lt;script&gt;\n    \/\/ \u753b\u50cf\u3092 Blob \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b\u3002\n    const loadImg = (function() {\n\n      const fileInput = document.getElementById(&#039;fileInput&#039;);\n      const Button = document.getElementById(&#039;button&#039;);\n      const testElement = document.getElementById(&#039;test&#039;);\n\n      \/\/ \u65b0\u3057\u3044Image\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\n      const imgElement = new Image();\n\n      const getImage2 = async function() {\n\n        const file = fileInput.files[0];\n        const fileReader = new FileReader();\n\n        fileReader.addEventListener(&#039;load&#039;, evt =&gt; {\n\n          const arrayBuffer = evt.target.result;\n\n          if (arrayBuffer.byteLength === file.size) {\n\n            console.log(&#039;(arrayBuffer.byteLength\/file.size) = (&#039; + arrayBuffer.byteLength + &#039;\/&#039; + file.size + &#039;)&#039;);\n\n            const reconstructedBlob = new Blob([arrayBuffer]);\n\n            if (imgElement.src) {\n              URL.revokeObjectURL(imgElement.src);\n              console.warn(&#039;URL.revokeObjectURL(imgElement.src)\u3092\u5b9f\u884c\u3057\u305f\u3002&#039;);\n            } else {\n              console.log(&#039;else imgElement.src = &#039;, imgElement.src);\n            }\n\n            imgElement.src = URL.createObjectURL(reconstructedBlob);\n\n            \/\/ \u4ee5\u524d\u306e\u753b\u50cf\u3092\u30af\u30ea\u30a2\n            if (testElement) {\n              testElement.innerHTML = &#039;&#039;; \/\/ \u3059\u3079\u3066\u306e\u5b50\u8981\u7d20\u3092\u30af\u30ea\u30a2\n            }\n\n            console.log(&#039;imgElement.src = &#039;, imgElement.src);\n\n            testElement.appendChild(imgElement);\n\n          }\n\n        });\n\n        const readSlice = function() {\n          fileReader.readAsArrayBuffer(file);\n        };\n\n        readSlice();\n\n      };\n\n      \/\/ \u5b9f\u884c\u3059\u308b\u3002\n      Button.addEventListener(&#039;click&#039;, () =&gt; getImage2());\n\n    })();\n  &lt;\/script&gt;\n\n&lt;\/body&gt;\n\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>(2-1)\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u5272\u3057\u3066\u8aad\u307f\u8fbc\u3080\u5834\u5408<\/p>\n\n\n\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n\n&lt;head&gt;\n\n  &lt;meta charset=&quot;utf-8&quot;&gt;\n  &lt;title&gt;sample&lt;\/title&gt;\n\n  &lt;style&gt;\n  &lt;\/style&gt;\n\n&lt;\/head&gt;\n\n&lt;body&gt;\n\n  \u753b\u50cf\u3092 Blob \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b(\u305d\u306e2-2)\u3002&lt;br&gt;\n  &lt;br&gt;\n\n  &lt;form id=&#039;fileInfo&#039;&gt;\n    &lt;input type=&#039;file&#039; id=&#039;fileInput&#039; multiple name=&#039;files&#039;&gt;\n  &lt;\/form&gt;\n\n  &lt;br&gt;\n\n  &lt;button id=&quot;button&quot;&gt;\u753b\u50cf\u3092\u8aad\u307f\u8fbc\u3080&lt;\/button&gt;\n\n  &lt;br&gt;\n\n  &lt;br&gt;\n\n  &lt;div id=&quot;test&quot;&gt;\n  &lt;\/div&gt;\n\n  &lt;script&gt;\n    \/\/ \u753b\u50cf\u3092 Blob \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b\u3002\n    const loadImg = (function() {\n\n      const fileInput = document.getElementById(&#039;fileInput&#039;);\n      const Button = document.getElementById(&#039;button&#039;);\n      const testElement = document.getElementById(&#039;test&#039;);\n\n      \/\/ \u65b0\u3057\u3044Image\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\n      const imgElement = new Image();\n\n      const chunkSize = 1024 * 5;\n\n      const getImage2 = async function() {\n\n        const file = fileInput.files[0];\n        const fileReader = new FileReader();\n        const arrayBufferList = [];\n\n        let offset = 0;\n\n        fileReader.addEventListener(&#039;load&#039;, evt =&gt; {\n\n          arrayBufferList.push(evt.target.result);\n\n          offset += evt.target.result.byteLength;\n\n          console.log(&#039;offset = &#039; + offset);\n\n          if (offset &lt; file.size) {\n            readSlice(offset);\n          }\n\n          if (offset === file.size) {\n\n            console.log(&#039;(offset\/file.size) = (&#039; + offset + &#039;\/&#039; + file.size + &#039;)&#039;);\n\n            const reconstructedBlob = new Blob(arrayBufferList);\n\n            console.log(&#039;imgElement.src = &#039;, imgElement.src);\n\n            if (imgElement.src) {\n              URL.revokeObjectURL(imgElement.src);\n              console.warn(&#039;URL.revokeObjectURL(imgElement.src)\u3092\u5b9f\u884c\u3057\u305f\u3002&#039;);\n            } else {\n              console.log(&#039;else imgElement.src = &#039;, imgElement.src);\n            }\n\n            imgElement.src = URL.createObjectURL(reconstructedBlob);\n\n            \/\/ \u4ee5\u524d\u306e\u753b\u50cf\u3092\u30af\u30ea\u30a2\n            if (testElement) {\n              testElement.innerHTML = &#039;&#039;; \/\/ \u3059\u3079\u3066\u306e\u5b50\u8981\u7d20\u3092\u30af\u30ea\u30a2\n            }\n\n            console.log(&#039;imgElement.src = &#039;, imgElement.src);\n\n            testElement.appendChild(imgElement);\n\n          }\n\n        });\n\n        const readSlice = function(o) {\n          const slice = file.slice(o, o + chunkSize);\n          fileReader.readAsArrayBuffer(slice);\n        };\n\n        readSlice(0);\n\n      };\n\n      \/\/ \u5b9f\u884c\u3059\u308b\u3002\n      Button.addEventListener(&#039;click&#039;, () =&gt; getImage2());\n\n    })();\n  &lt;\/script&gt;\n\n&lt;\/body&gt;\n\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<script type=\"text\/javascript\">\njQuery(function($){\n$(\".jp-video\").hide();\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u753b\u50cf\u3092Blob\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b\u5909\u63db\u5f8c\u306bBlob URL\u3092\u751f\u6210\u3059\u308b(\u305d\u306e2)\u3002 \u3053\u306e\u30b3\u30fc\u30c9\u306f\u6b21\u306e\u95a2\u6570\u7b49\u3092\u5b66\u7fd2\u3059\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u3067\u3042\u308b\u3002new Blob()\u3067\u65b0\u3057\u3044Blob\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u751f\u6210URL.createOb [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-4502","post","type-post","status-publish","format-standard","hentry","category-javascript"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/4502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4502"}],"version-history":[{"count":6,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/4502\/revisions"}],"predecessor-version":[{"id":4509,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/4502\/revisions\/4509"}],"wp:attachment":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}