{"id":28489,"date":"2021-05-26T19:07:00","date_gmt":"2021-05-26T16:07:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28489"},"modified":"2021-10-18T03:41:45","modified_gmt":"2021-10-18T00:41:45","slug":"przeciagnij-i-upusc-przesylanie-plikow-za-pomoca-javascript-i-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/przeciagnij-i-upusc-przesylanie-plikow-za-pomoca-javascript-i-php\/","title":{"rendered":"Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie plik\u00f3w za pomoc\u0105 JavaScript i PHP"},"content":{"rendered":"<p>Czy chcesz zintegrowa\u0107 funkcj\u0119 przesy\u0142ania plik\u00f3w metod\u0105 \u201eprzeci\u0105gnij i upu\u015b\u0107&#8221; w swojej witrynie? Ta funkcja jest przyjazna dla u\u017cytkownika i zmniejsza liczb\u0119 klikni\u0119\u0107 u\u017cytkownik\u00f3w. W tym artykule dowiemy si\u0119, jak doda\u0107 funkcj\u0119 przesy\u0142ania plik\u00f3w metod\u0105 \u201eprzeci\u0105gnij i upu\u015b\u0107&#8221; za pomoc\u0105 JavaScript i PHP. B\u0119dziesz mie\u0107 r\u00f3wnie\u017c dane wej\u015bciowe do przegl\u0105dania pliku.<\/p>\n<p>Ostateczny interfejs u\u017cytkownika przesy\u0142ania plik\u00f3w b\u0119dzie wygl\u0105da\u0142 jak na poni\u017cszym obrazku.<\/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=\"Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie plik\u00f3w za pomoc\u0105 JavaScript i PHP\" ><\/a><\/p>\n<h3>Dlaczego potrzebujesz funkcji przeci\u0105gania i upuszczania plik\u00f3w?<\/h3>\n<p>Zawsze chcemy mie\u0107 lepsze wra\u017cenia u\u017cytkownika na stronie. Udost\u0119pnianie funkcji przeci\u0105gania i upuszczania w celu przesy\u0142ania plik\u00f3w jest \u0142atw\u0105 w u\u017cyciu opcj\u0105 dla u\u017cytkownik\u00f3w. Wiele popularnych stron internetowych, takich jak Facebook, WordPress ju\u017c korzysta z tej funkcji.<\/p>\n<p>Ta funkcja wygl\u0105da lepiej w por\u00f3wnaniu z tradycyjnym sposobem przesy\u0142ania plik\u00f3w. Poprawia r\u00f3wnie\u017c wygod\u0119 u\u017cytkownika, poniewa\u017c u\u017cytkownik po prostu przeci\u0105ga plik i przesy\u0142a go na serwer.<\/p>\n<p>W tym samouczku udost\u0119pnimy u\u017cytkownikom obie opcje. Plik mo\u017cna przes\u0142a\u0107 za pomoc\u0105 metody \u201eprzeci\u0105gnij i upu\u015b\u0107&#8221; lub poprzez wej\u015bcie pliku.<\/p>\n<p>Zamierzam u\u017cy\u0107 Ajax do przesy\u0142ania plik\u00f3w po stronie serwera. U\u017cywaj\u0105c Ajax, twoja strona nie zostanie za\u0142adowana. Po prostu wysy\u0142a plik do serwera w tle.<\/p>\n<h3>Zintegruj narz\u0119dzie do przesy\u0142ania plik\u00f3w \u201eprzeci\u0105gnij i upu\u015b\u0107&#8221;<\/h3>\n<p>Na pocz\u0105tek napiszmy najpierw kod HTML. Poni\u017cszy kod HTML b\u0119dzie zawiera\u0142 kontener do przesy\u0142ania plik\u00f3w. Zawiera r\u00f3wnie\u017c plik CSS i JS, kt\u00f3ry stworz\u0119 w kolejnych krokach.<\/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>W powy\u017cszym kodzie HTML wykorzysta\u0142em 2 zdarzenia \u2013 ondrop i onclick. Ich metody zdefiniuj\u0119 w <code>custom.js<\/code>pliku. Wcze\u015bniej dodajmy kod CSS w <code>style.css<\/code>pliku.<\/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>Naszym celem jest to, \u017ce gdy u\u017cytkownik upuszcza lub przegl\u0105da plik, plik powinien zosta\u0107 przes\u0142any na serwer. W tym celu musisz napisa\u0107 kod JavaScript, kt\u00f3ry pobiera plik po stronie klienta i wysy\u0142a go na serwer.<\/p>\n<p>Aby obs\u0142u\u017cy\u0107 ten przep\u0142yw, dodaj poni\u017cszy kod do <code>custom.js<\/code>pliku.<\/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>Napisany powy\u017cej kod JavaScript automatycznie wykrywa opcje wybrane przez u\u017cytkownika do przes\u0142ania pliku. Na koniec funkcja <code>ajax_file_upload()<\/code>pobiera obiekt pliku i przekazuje go do pliku Ajax.<\/p>\n<h4>Prze\u015blij plik na serwer<\/h4>\n<p>W pliku Ajax napisz\u0119 rzeczywisty kod, kt\u00f3ry wgrywa plik na serwer. Utw\u00f3rz plik o nazwie <code>ajax.php<\/code>i dodaj do niego poni\u017cszy kod.<\/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>Ten kod PHP sprawdza najpierw, czy folder o nazwie \u201eprzesy\u0142ane&#8221; istnieje na serwerze. Je\u015bli nie, tworzy katalog \u201euploads&#8221; i przenosi do niego plik. Mo\u017cesz dostosowa\u0107 t\u0119 \u015bcie\u017ck\u0119 katalogu zgodnie z wymaganiami.<\/p>\n<p>Mam nadziej\u0119, \u017ce rozumiesz, jak doda\u0107 przesy\u0142anie plik\u00f3w metod\u0105 \u201eprzeci\u0105gnij i upu\u015b\u0107&#8221; za pomoc\u0105 PHP i JavaScript. Daj mi zna\u0107 swoje przemy\u015blenia i sugestie w poni\u017cszym komentarzu.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przeciagnij-i-upusc-przesylanie-wielu-plikow-za-pomoca-javascript-i-php\/\" title=\"Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie wielu plik\u00f3w za pomoc\u0105 JavaScript i PHP\" >Przeci\u0105gnij i upu\u015b\u0107 przesy\u0142anie wielu plik\u00f3w za pomoc\u0105 JavaScript i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/przesylanie-plikow-ajax-za-pomoca-php-i-jquery\/\" title=\"Przesy\u0142anie plik\u00f3w Ajax za pomoc\u0105 PHP i jQuery\" >Przesy\u0142anie plik\u00f3w Ajax za pomoc\u0105 PHP i 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\/pl\/tinypng-kompresuj-obrazy-za-pomoca-php\/\" title=\"TinyPNG Kompresuj obrazy za pomoc\u0105 PHP\">TinyPNG Kompresuj obrazy za pomoc\u0105 PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule poka\u017cemy, jak doda\u0107 przesy\u0142anie plik\u00f3w metod\u0105 \u201eprzeci\u0105gnij i upu\u015b\u0107\u201d do Twojej witryny. Wraz z przeci\u0105ganiem i upuszczaniem dajemy r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 wyboru pliku.<\/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":[209,249],"tags":[847],"class_list":["post-28489","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-8","category-javascript-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=28489"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28489\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=28489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=28489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=28489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}