{"id":28677,"date":"2021-05-26T09:19:00","date_gmt":"2021-05-26T06:19:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28677"},"modified":"2021-10-17T04:38:20","modified_gmt":"2021-10-17T01:38:20","slug":"dra-och-slapp-flera-filoverforingar-med-javascript-och-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-flera-filoverforingar-med-javascript-och-php\/","title":{"rendered":"Dra och sl\u00e4pp flera fil\u00f6verf\u00f6ringar med JavaScript och PHP"},"content":{"rendered":"<p>Tidigare har jag skrivit en artikel <a href=\"https:\/\/themewp.inform.click\/sv\/dra-och-slapp-filoverforing-med-javascript-och-php\/\" title=\"Ladda och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP\" >Ladda och sl\u00e4pp fil\u00f6verf\u00f6ring med JavaScript och PHP<\/a>. Vissa l\u00e4sare bad att skriva en artikel om hur man l\u00e4gger till en filuppladdare som till\u00e5ter anv\u00e4ndare att ladda upp flera filer med dra och sl\u00e4pp-funktionerna.<\/p>\n<p>N\u00e4r du arbetar med en webbapplikation kan du beh\u00f6va ladda upp flera filer med en enda uppladdare i ditt formul\u00e4r. Det kan hj\u00e4lpa en anv\u00e4ndare att ladda upp enstaka eller flera filer p\u00e5 en g\u00e5ng. De gillar inte att ladda upp flera filer en efter en. Att ge en s\u00e5dan filuppladdningsfunktion ger en b\u00e4ttre anv\u00e4ndarupplevelse och p\u00e5skyndar ocks\u00e5 din applikation.<\/p>\n<p>I den h\u00e4r artikeln visar jag hur du l\u00e4gger till den h\u00e4r fil\u00f6verf\u00f6raren utan att anv\u00e4nda n\u00e5got externt dra och sl\u00e4pp-plugin. Jag laddar upp filerna med Ajax. Det betyder att filer laddas upp p\u00e5 servern utan att en hel sida laddas om.<\/p>\n<h3>Komma ig\u00e5ng<\/h3>\n<p>Som jag sa kommer vi inte anv\u00e4nda n\u00e5got externt plugin f\u00f6r dra och sl\u00e4pp-funktionen. Jag ska skriva all kod fr\u00e5n b\u00f6rjan. Det \u00e4r mycket l\u00e4ttare. Det finns inga komplexa grejer i den. F\u00f6lj bara stegen nedan s\u00e5 \u00e4r du klar.<\/p>\n<p>L\u00e5t oss skapa en fil <code>index.html<\/code>och l\u00e4gga till koden nedan i den.<\/p>\n<p><strong>index.html<\/strong><\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta charset=\"UTF-8\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Drag Drop Multiple File Upload&lt;\/title&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"style.css\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drop_file_zone\" ondrop=\"upload_file(event)\" ondragover=\"return false\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drag_upload_file\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Drop file(s) here&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;or&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"button\" value=\"Select File(s)\" onclick=\"file_explorer();\"&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"selectfile\" multiple&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"custom.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>H\u00e4r inkluderade jag <code>style.css<\/code>och <code>custom.js<\/code>d\u00e4r vi l\u00e4gger till en relaterad kod. Eftersom vi t\u00e4nker anv\u00e4nda Ajax inkluderade jag ett jQuery-bibliotek.<\/p>\n<p>F\u00f6r att ge ett grundl\u00e4ggande anv\u00e4ndargr\u00e4nssnitt f\u00f6r v\u00e5r filuppladdare, l\u00e5t oss l\u00e4gga till n\u00e5gra CSS-egenskaper. Naturligtvis kan du l\u00e4gga till din egen CSS f\u00f6r att ge ett annat utseende f\u00f6r filuppladdaren.<\/p>\n<p><strong>style.css<\/strong><\/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\u00a0\u00a0\u00a0width:50%;\n\u00a0\u00a0\u00a0\u00a0margin:0 auto;\n}\n#drag_upload_file p {\n\u00a0\u00a0\u00a0\u00a0text-align: center;\n}\n#drag_upload_file #selectfile {\n\u00a0\u00a0\u00a0\u00a0display: none;\n}<\/code><\/pre>\n<p>Efter detta b\u00f6r du se din filuppladdare som nedan sk\u00e4rmdump:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20458-6081f4f9475a9.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-20458-6081f4f9475a9.png\" alt=\"Dra och sl\u00e4pp flera fil\u00f6verf\u00f6ringar med JavaScript och PHP\" ><\/a><\/p>\n<h3>Dra och sl\u00e4pp flera filer med JavaScript och PHP<\/h3>\n<p>Du \u00e4r inst\u00e4lld p\u00e5 det grundl\u00e4ggande anv\u00e4ndargr\u00e4nssnittet. Nu kan vi forts\u00e4tta och skriva aktuell kod f\u00f6r JavaScript och PHP som laddar upp filer p\u00e5 en server. I v\u00e5r HTML lade jag till tv\u00e5 metoder upload_file() och file_explorer () som f\u00e5r samtal p\u00e5 drop-filer och v\u00e4ljer filer respektive.<\/p>\n<p>L\u00e5t oss definiera dessa metoder och skicka filerna till serversidan som laddar upp filer p\u00e5 en server.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>var fileobj;\nfunction upload_file(e) {\n\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\u00a0\u00a0\u00a0ajax_file_upload(e.dataTransfer.files);\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\u00a0files = document.getElementById('selectfile').files;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ajax_file_upload(files);\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();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(i=0; i&lt;file_obj.length; i++) {\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file[]', file_obj[i]);\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\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>Skriv slutligen en server-sida kod f\u00f6r filuppladdning i <code>ajax.php<\/code>filen.<\/p>\n<p><strong>ajax.php<\/strong><\/p>\n<pre><code>&lt;?php\nforeach($_FILES['file']['name'] as $key=&gt;$val){\n\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['file']['name'][$key];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ get filename without extension\n\u00a0\u00a0\u00a0\u00a0$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension. '_' .uniqid(). '.' .$ext;\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['file']['tmp_name'][$key], getcwd(). '\/uploads\/'.$filename_to_store);\n}\necho \"File(s) uploaded successfully\";\ndie;<\/code><\/pre>\n<p>Den h\u00e4r koden skapar en &quot;uppladdningskatalog&quot; p\u00e5 din server och lagrar alla filer i den h\u00e4r katalogen. N\u00e4r vi lagrar filer p\u00e5 en server tar vi hand om att beh\u00e5lla det unika namnet p\u00e5 varje uppladdad fil med hj\u00e4lp av PHP-funktionen <code>uniqid()<\/code>.<\/p>\n<p>Det handlar om att ladda upp flera filer med dra-sl\u00e4pp-funktionen. Jag hoppas att du fick veta om det. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/bildoptimering-med-hjalp-av-artisansweb-image-optimizer-package\/\" title=\"Bildoptimering med hj\u00e4lp av artisansweb \/ image-optimizer Package\" >Bildoptimering med hj\u00e4lp av artisansweb \/ image-optimizer Package<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-implementerar-bitoverforing-i-php\/\" title=\"Hur man implementerar bit\u00f6verf\u00f6ring i PHP\" >Hur man implementerar bit\u00f6verf\u00f6ring i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-laser-text-fran-bild-i-php\/\" title=\"Hur man l\u00e4ser text fr\u00e5n bild i PHP\" >Hur man l\u00e4ser text fr\u00e5n bild i 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>Vill du implementera dra och sl\u00e4pp flera filuppladdningsfunktioner till din webbplats? I den h\u00e4r artikeln studerar vi hur man l\u00e4gger till fil\u00f6verf\u00f6rare som till\u00e5ter<\/p>\n","protected":false},"author":1,"featured_media":21646,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[251],"tags":[850],"class_list":["post-28677","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28677","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=28677"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28677\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21646"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}