{"id":28665,"date":"2021-05-26T18:58:00","date_gmt":"2021-05-26T15:58:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28665"},"modified":"2021-10-17T04:37:25","modified_gmt":"2021-10-17T01:37:25","slug":"dra-och-slapp-filoverforing-med-javascript-och-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-filoverforing-med-javascript-och-php\/","title":{"rendered":"Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP"},"content":{"rendered":"<p>Vill du integrera dra och sl\u00e4pp-fil\u00f6verf\u00f6ringsfunktionen p\u00e5 din webbplats? Den h\u00e4r funktionen \u00e4r anv\u00e4ndarv\u00e4nlig och minskar anv\u00e4ndarnas klick. I den h\u00e4r artikeln studerar vi hur du l\u00e4gger till funktionalitet f\u00f6r att dra och sl\u00e4ppa fil\u00f6verf\u00f6ring med JavaScript och PHP. Du kommer ocks\u00e5 att ha filinmatning f\u00f6r att bl\u00e4ddra i en fil.<\/p>\n<p>Det sista anv\u00e4ndargr\u00e4nssnittet f\u00f6r fil\u00f6verf\u00f6ring ser ut som bilden nedan.<\/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=\"Dra och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP\" ><\/a><\/p>\n<h3>Varf\u00f6r beh\u00f6ver du dra och sl\u00e4pp fil\u00f6verf\u00f6ringsfunktion?<\/h3>\n<p>Vi vill alltid ha en b\u00e4ttre anv\u00e4ndarupplevelse p\u00e5 webbplatsen. Att ge dra och sl\u00e4pp-funktionen f\u00f6r att ladda upp filer \u00e4r ett l\u00e4ttanv\u00e4nt alternativ f\u00f6r dina anv\u00e4ndare. M\u00e5nga popul\u00e4ra webbplatser som Facebook, WordPress anv\u00e4nder redan den h\u00e4r funktionen.<\/p>\n<p>Denna funktion ser b\u00e4ttre ut j\u00e4mf\u00f6rt med det traditionella s\u00e4ttet att ladda upp filer. Det f\u00f6rb\u00e4ttrar ocks\u00e5 anv\u00e4ndarupplevelsen eftersom anv\u00e4ndaren helt enkelt drar filen och laddar upp den p\u00e5 en server.<\/p>\n<p>I denna handledning kommer vi att ge b\u00e5da alternativen till anv\u00e4ndarna. Man kan ladda upp filen antingen med dra och sl\u00e4pp eller genom filinmatningen.<\/p>\n<p>Jag ska anv\u00e4nda Ajax f\u00f6r att ladda upp filer p\u00e5 serversidan. Om du anv\u00e4nder Ajax laddas din sida inte. Den skickar helt enkelt filen till servern i bakgrunden.<\/p>\n<h3>Integrera Drag &#038; Drop File Uploader<\/h3>\n<p>F\u00f6r att komma ig\u00e5ng, l\u00e5t oss f\u00f6rst skriva HTML-koden. F\u00f6ljande HTML-kod kommer att ha en beh\u00e5llare f\u00f6r fil\u00f6verf\u00f6ring. Den inneh\u00e5ller ocks\u00e5 en CSS- och JS-fil som jag skapar i n\u00e4sta steg.<\/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>I ovanst\u00e5ende HTML anv\u00e4nde jag de tv\u00e5 h\u00e4ndelserna &#8211; ondrop och onclick. Jag kommer att definiera deras metoder i <code>custom.js<\/code>filen. Innan det, l\u00e5t oss l\u00e4gga till CSS-koden i <code>style.css<\/code>filen.<\/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>V\u00e5rt m\u00e5l \u00e4r att n\u00e4r en anv\u00e4ndare tappar eller bl\u00e4ddrar i en fil ska filen laddas upp till servern. F\u00f6r detta m\u00e5ste du skriva JavaScript-kod som tar en fil fr\u00e5n klientsidan och skickar den till servern.<\/p>\n<p>F\u00f6r att hantera detta fl\u00f6de, l\u00e4gg till koden nedan i <code>custom.js<\/code>filen.<\/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>JavaScript-koden skriven ovan uppt\u00e4cker automatiskt de alternativ som anv\u00e4ndaren valt f\u00f6r att ladda upp en fil. Slutligen <code>ajax_file_upload()<\/code>tar funktionen filobjektet och skickar det till Ajax-filen.<\/p>\n<h4>Ladda upp fil p\u00e5 servern<\/h4>\n<p>I Ajax-filen skriver jag den faktiska koden som laddar upp filen p\u00e5 servern. Skapa en fil som heter <code>ajax.php<\/code>och l\u00e4gg till koden nedan i den.<\/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>Denna PHP-kod kontrollerar f\u00f6rst om mappen som heter &quot;uppladdningar&quot; finns p\u00e5 en server. Om inte, skapar den en katalog med &quot;uppladdningar&quot; och flyttar filen inuti den. Du kan justera den h\u00e4r katalogv\u00e4gen enligt dina krav.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur du l\u00e4gger till dra-och-sl\u00e4pp-fil\u00f6verf\u00f6ring med PHP och JavaScript. L\u00e5t mig veta dina tankar och f\u00f6rslag i kommentaren nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-flera-filoverforingar-med-javascript-och-php\/\" title=\"Dra och sl\u00e4pp flera fil\u00f6verf\u00f6ringar med JavaScript och PHP\" >Dra och sl\u00e4pp flera fil\u00f6verf\u00f6ringar med JavaScript och PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/ajax-filoverforing-med-php-och-jquery\/\" title=\"Ajax-fil\u00f6verf\u00f6ring med PHP och jQuery\" >Ajax-fil\u00f6verf\u00f6ring med PHP och jQuery<\/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\/sv\/tinypng-komprimera-bilder-med-php\/\" title=\"TinyPNG Komprimera bilder med PHP\">TinyPNG Komprimera bilder med PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I den h\u00e4r artikeln visar vi dig hur du l\u00e4gger till dra och sl\u00e4pp-fil\u00f6verf\u00f6ring f\u00f6r din webbplats. Tillsammans med dra och sl\u00e4pp ger vi ocks\u00e5 m\u00f6jlighet att v\u00e4lja fil.<\/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":[211,251],"tags":[850],"class_list":["post-28665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-10","category-javascript-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28665"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28665\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}