{"id":281,"date":"2008-05-12T04:21:11","date_gmt":"2008-05-12T04:21:11","guid":{"rendered":"http:\/\/6teen.ru\/?p=113"},"modified":"2008-05-12T04:21:11","modified_gmt":"2008-05-12T04:21:11","slug":"2326","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=281","title":{"rendered":"\u0417\u0430\u043a\u0430\u0447\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e FTP"},"content":{"rendered":"<p>\u0417\u0430\u043a\u0430\u0447\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e FTP<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u0417\u0430\u043a\u0430\u0447\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e FTP\n\nprocedure uploadperftp;\nprocedure getdir(dir: string);\nvar\nsearchrec: tsearchrec;\ndetails, nodetails: tstringlist;\nk: integer;\nbegin\n\/\/iterate through directory given\nif findfirst(dir + '*.*', faanyfile, searchrec) = 0 then\nbegin\nrepeat\n\/\/get rid of the both \"dummy-directories\" '.' and '..'\nif (searchrec.name <> '.') and (searchrec.name <> '..') then\nbegin\n\/\/if we found a folder\nif (searchrec.attr and fadirectory) = fadirectory then\nbegin\n\/\/get folder contents from ftp. one with details, one without\ndetails := tstringlist.create;\nnodetails := tstringlist.create;\nftpclient.list(details, '', true);\nftpclient.list(nodetails, '', false);\n\/\/we only want to have directories in the list (without '.' and '..')\nfor k := details.count - 1 downto 0 do\nbegin\nif details.strings[k] <> '' then\nbegin\nif (details.strings[k][1] <> 'd') or\n(nodetails.strings[k] = '.') or\n(nodetails.strings[k] = '..') then\nbegin\ndetails.delete(k);\nnodetails.delete(k);\nend;\nend;\nend;\n\/\/if our directory does not exists on the server, create it\nif nodetails.indexof(searchrec.name) = -1 then\nbegin\nftpclient.makedir(searchrec.name);\nend;\n\n\/\/change into next directory on server\nftpclient.changedir(searchrec.name);\ndetails.free;\nnodetails.free;\n\n\/\/and also locally go into the next subfolder\ngetdir(dir + searchrec.name + '');\n\n\/\/we have to go one directory up after leaving the recursion\nhochgehen\nftpclient.changedirup;\nend\nelse\nbegin\n\/\/if it's only a file, upload it to the current directory\nftpclient.put(dir + searchrec.name, searchrec.name);\nend;\nend;\nuntil findnext(searchrec) <> 0;\nfindclose(searchrec);\nend;\nend;\nvar\ndir: string;\ndetails, nodetails: tstringlist;\nk: integer;\nbegin\n\/\/set some basic settings on your ftp client (tidftpclient)\nwith ftpclient do\nbegin\nhost := 'your_server.com'; \/\/ adjust your data here \/ hier gwunschte daten eintragen\nusername := 'your_username';\n\/\/ adjust your data here\npassword := 'your_password';\n\/\/ adjust your data here\npassive := true; \/\/ adjust your data here\nend;\nftpclient.connect;\n\n\/\/if you want to upload you data to an remote-directory, enter it below (does not matter if 'dirdir' or 'dir\/dir')\ndir := stringreplace('your\/remote_directory', '', '\/', [rfreplaceall]);\n\/\/ adjust your data here\n\n\/\/remove first '\/' if there's one\nif dir <> '' then\nbegin\nif dir[1] = '\/' then delete(dir, 1, 1);\n\n\/\/but add a '\/' at the end\nif dir[length(dir)] <> '\/' then dir := dir + '\/';\n\n\/\/loop through our remote-directories\nwhile pos('\/', dir) > 0 do\nbegin\n\/\/get folder contents from ftp. one with details, one without\ndetails := tstringlist.create;\nnodetails := tstringlist.create;\nftpclient.list(details, '', true);\nftpclient.list(nodetails, '', false);\n\n\/\/we only want to have directories in the list (without '.' and '..')\nfor k := details.count - 1 downto 0 do\nbegin\nif details.strings[k] <> '' then\nbegin\nif (details.strings[k][1] <> 'd') or\n(nodetails.strings[k] = '.') or\n(nodetails.strings[k] = '..') then\nbegin\ndetails.delete(k);\nnodetails.delete(k);\nend;\nend;\nend;\n\n\/\/if our directory does not exists on the server, create it\nif nodetails.indexof(copy(dir, 1, pos('\/', dir) - 1)) = -1 then\nbegin\nftpclient.makedir(copy(dir, 1, pos('\/', dir) - 1));\nend;\n\n\/\/change to our directory on server\nftpclient.changedir(copy(dir, 1, pos('\/', dir) - 1));\n\n\/\/remove first directory from path ('your\/directory\/subdir\/' --> 'directory\/subdir\/')\ndelete(dir, 1, pos('\/', dir));\ndetails.free;\nnodetails.free;\nend;\nend;\n\n\/\/ftp client is ready in your remote-directory\n\/\/begin to upload our local directory\ndir := 'c:yourlocaldirectory';\n\/\/ adjust your data here\nif dir[length(dir)] <> '' then dir := dir + '';\ngetdir(dir);\nftpclient.disconnect;\nend;\n\n\u0410\u0432\u0442\u043e\u0440: marco senn\nhttp:\/\/tooldesign.ch\/\n\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: http:\/\/www.swissdelphicenter.ch\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u043a\u0430\u0447\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u043e FTP<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[448,457],"tags":[73,698,733,827],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/281"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/281\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}