{"id":24856,"date":"2021-05-26T18:34:00","date_gmt":"2021-05-26T15:34:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24856"},"modified":"2021-10-17T20:38:31","modified_gmt":"2021-10-17T17:38:31","slug":"veda-ja-pudota-tiedostolataus-kayttamalla-javascriptia-ja-php-ta","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/veda-ja-pudota-tiedostolataus-kayttamalla-javascriptia-ja-php-ta\/","title":{"rendered":"Ved\u00e4 ja pudota tiedostolataus k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\u00e4"},"content":{"rendered":"<p>Aiotko integroida ved\u00e4 ja pudota -toiminnon tiedostojen latausominaisuuden verkkosivustollesi? T\u00e4m\u00e4 ominaisuus on k\u00e4ytt\u00e4j\u00e4yst\u00e4v\u00e4llinen ja v\u00e4hent\u00e4\u00e4 k\u00e4ytt\u00e4jien napsautuksia. T\u00e4ss\u00e4 artikkelissa tutkitaan kuinka lis\u00e4t\u00e4 toimintoja vet\u00e4m\u00e4ll\u00e4 ja pudottamalla tiedostojen lataamiseen JavaScriptin ja PHP: n avulla. Sinulla on my\u00f6s tiedostosy\u00f6tt\u00f6 tiedoston selaamiseksi.<\/p>\n<p>Lopullinen tiedostojen lataamisen k\u00e4ytt\u00f6liittym\u00e4 n\u00e4ytt\u00e4\u00e4 alla olevalta kuvalta.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20461-6081f57b5e9c0.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20461-6081f57b5e9c0.png\" alt=\"Ved\u00e4 ja pudota tiedostolataus k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\u00e4\" ><\/a><\/p>\n<h3>Miksi tarvitset ved\u00e4 ja pudota -toiminnon?<\/h3>\n<p>Haluamme aina saada paremman k\u00e4ytt\u00f6kokemuksen verkkosivustolla. Ved\u00e4 ja pudota -ominaisuuden antaminen tiedostojen lataamiseksi on helppok\u00e4ytt\u00f6inen vaihtoehto k\u00e4ytt\u00e4jillesi. Monet suosituista verkkosivustoista, kuten Facebook, WordPress, k\u00e4ytt\u00e4v\u00e4t jo t\u00e4t\u00e4 ominaisuutta.<\/p>\n<p>T\u00e4m\u00e4 ominaisuus n\u00e4ytt\u00e4\u00e4 paremmalta verrattuna perinteiseen tiedostojen lataustapaan. Se parantaa my\u00f6s k\u00e4ytt\u00f6kokemusta, kun k\u00e4ytt\u00e4j\u00e4 yksinkertaisesti vet\u00e4\u00e4 tiedoston ja lataa sen palvelimelle.<\/p>\n<p>T\u00e4ss\u00e4 opetusohjelmassa annamme molemmat vaihtoehdot k\u00e4ytt\u00e4jille. Tiedosto voidaan ladata joko vet\u00e4m\u00e4ll\u00e4 ja pudottamalla tai tiedoston sy\u00f6tteen kautta.<\/p>\n<p>Aion k\u00e4ytt\u00e4\u00e4 Ajaxia tiedostojen lataamiseen palvelinpuolelle. Ajaxia k\u00e4ytt\u00e4m\u00e4ll\u00e4 sivua ei ladata. Se yksinkertaisesti l\u00e4hett\u00e4\u00e4 tiedoston palvelimelle taustalla.<\/p>\n<h3>Integroi ved\u00e4 ja pudota -toiminto<\/h3>\n<p>Aloitetaan kirjoittamalla ensin HTML-koodi. Seuraavassa HTML-koodissa on s\u00e4il\u00f6 tiedostojen lataamista varten. Se sis\u00e4lt\u00e4\u00e4 my\u00f6s CSS- ja JS-tiedoston, jotka luon seuraavissa vaiheissa.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"style.css\"&gt;\n&lt;div id=\"drop_file_zone\" ondrop=\"upload_file(event)\" ondragover=\"return false\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drag_upload_file\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Drop file here&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;or&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"button\" value=\"Select File\" onclick=\"file_explorer();\"&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"selectfile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/div&gt;\n\u00a0\n&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"custom.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Yll\u00e4 olevassa HTML: ss\u00e4 k\u00e4ytin kahta tapahtumaa &#8211; ondrop ja onclick. M\u00e4\u00e4rit\u00e4n heid\u00e4n menetelm\u00e4ns\u00e4 <code>custom.js<\/code>tiedostossa. Ennen sit\u00e4 lis\u00e4t\u00e4\u00e4n CSS-koodi <code>style.css<\/code>tiedostoon.<\/p>\n<pre><code>#drop_file_zone {\n\u00a0\u00a0\u00a0\u00a0background-color: #EEE;\n\u00a0\u00a0\u00a0\u00a0border: #999 5px dashed;\n\u00a0\u00a0\u00a0\u00a0width: 290px;\n\u00a0\u00a0\u00a0\u00a0height: 200px;\n\u00a0\u00a0\u00a0\u00a0padding: 8px;\n\u00a0\u00a0\u00a0\u00a0font-size: 18px;\n}\n#drag_upload_file {\n\u00a0\u00a0width:50%;\n\u00a0\u00a0margin:0 auto;\n}\n#drag_upload_file p {\n\u00a0\u00a0text-align: center;\n}\n#drag_upload_file #selectfile {\n\u00a0\u00a0display: none;\n}<\/code><\/pre>\n<p>Tavoitteenamme on, ett\u00e4 kun k\u00e4ytt\u00e4j\u00e4 pudottaa tai selaa tiedostoa, tiedoston pit\u00e4isi ladata palvelimelle. T\u00e4t\u00e4 varten sinun on kirjoitettava JavaScript-koodi, joka vie tiedoston asiakaspuolelta ja l\u00e4hett\u00e4\u00e4 sen palvelimelle.<\/p>\n<p>Voit k\u00e4sitell\u00e4 t\u00e4t\u00e4 kulkua lis\u00e4\u00e4m\u00e4ll\u00e4 alla olevan koodin <code>custom.js<\/code>tiedostoon.<\/p>\n<pre><code>var fileobj;\nfunction upload_file(e) {\n\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\u00a0\u00a0\u00a0fileobj = e.dataTransfer.files[0];\n\u00a0\u00a0\u00a0\u00a0ajax_file_upload(fileobj);\n}\n\u00a0\nfunction file_explorer() {\n\u00a0\u00a0\u00a0\u00a0document.getElementById('selectfile').click();\n\u00a0\u00a0\u00a0\u00a0document.getElementById('selectfile').onchange = function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fileobj = document.getElementById('selectfile').files[0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ajax_file_upload(fileobj);\n\u00a0\u00a0\u00a0\u00a0};\n}\n\u00a0\nfunction ajax_file_upload(file_obj) {\n\u00a0\u00a0\u00a0\u00a0if(file_obj != undefined) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var form_data = new FormData();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file', file_obj);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.ajax({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: 'ajax.php',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0contentType: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0processData: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data: form_data,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success:function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#selectfile').val('');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Yll\u00e4 kirjoitettu JavaScript-koodi tunnistaa automaattisesti k\u00e4ytt\u00e4j\u00e4n ladatut vaihtoehdot. Lopuksi toiminto <code>ajax_file_upload()<\/code>vie tiedosto-objektin ja v\u00e4litt\u00e4\u00e4 sen Ajax-tiedostoon.<\/p>\n<h4>L\u00e4het\u00e4 tiedosto palvelimelle<\/h4>\n<p>Kirjoitan Ajax-tiedostoon varsinaisen koodin, joka l\u00e4hett\u00e4\u00e4 tiedoston palvelimelle. Luo tiedosto nimelt\u00e4 nimelt\u00e4 <code>ajax.php<\/code>ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/p>\n<pre><code>&lt;?php\n$arr_file_types = ['image\/png', 'image\/gif', 'image\/jpg', 'image\/jpeg'];\n\u00a0\nif (!(in_array($_FILES['file']['type'], $arr_file_types))) {\n\u00a0\u00a0\u00a0\u00a0echo \"false\";\n\u00a0\u00a0\u00a0\u00a0return;\n}\n\u00a0\nif (!file_exists('uploads')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0777);\n}\n\u00a0\nmove_uploaded_file($_FILES['file']['tmp_name'], 'uploads\/'. time(). '_'. $_FILES['file']['name']);\n\u00a0\necho \"File uploaded successfully.\";<\/code><\/pre>\n<p>T\u00e4m\u00e4 PHP-koodi tarkistaa ensin, onko palvelimella kansio nimelt\u00e4 uploads. Jos ei, se luo &#8217;uploads&#8217; -hakemiston ja siirt\u00e4\u00e4 tiedoston sen sis\u00e4ll\u00e4. Voit s\u00e4\u00e4t\u00e4\u00e4 t\u00e4t\u00e4 hakemistopolkua vaatimuksesi mukaan.<\/p>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka lis\u00e4t\u00e4 ved\u00e4 ja pudota -tiedostolataus PHP: ll\u00e4 ja JavaScriptill\u00e4. Kerro minulle ajatuksesi ja ehdotuksesi alla olevassa kommentissa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/veda-ja-pudota-useita-tiedostolatauksia-kayttamalla-javascriptia-ja-php-ta\/\" title=\"Ved\u00e4 ja pudota useita tiedostolatauksia k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\u00e4\" >Ved\u00e4 ja pudota useita tiedostolatauksia k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/ajax-tiedostojen-lataus-php-lla-ja-jquerylla\/\" title=\"Ajax-tiedostojen lataus PHP: ll\u00e4 ja jQueryll\u00e4\" >Ajax-tiedostojen lataus PHP: ll\u00e4 ja jQueryll\u00e4<\/a><br \/>\n<a href=\"https:\/\/artisansweb.net\/ajax-file-upload-php-jquery\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a>&#8211; <a href=\"https:\/\/artisansweb.net\/ajax-file-upload-php-jquery\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/themewp.inform.click\/fi\/tinypng-pakkaa-kuvat-php-lla\/\" title=\"TinyPNG Pakkaa kuvat PHP: ll\u00e4\">TinyPNG Pakkaa kuvat PHP: ll\u00e4<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa n\u00e4yt\u00e4mme, kuinka voit lis\u00e4t\u00e4 ved\u00e4 ja pudota -tiedostojen lataamisen verkkosivustollesi. Ved\u00e4 ja pudota -toiminnon lis\u00e4ksi annamme my\u00f6s vaihtoehdon valita tiedosto.<\/p>\n","protected":false},"author":1,"featured_media":21623,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[207,247],"tags":[843],"class_list":["post-24856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-6","category-javascript-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24856"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24856\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}