1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Make our connection <br></span> <span class="token variable">$connection</span> <span class="token operator">=</span> <span class="token function">ssh2_connect</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'c0389i0.hondacars.biz'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Authenticate<br></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">ssh2_auth_password</span><span class="token punctuation">(</span><span class="token variable">$connection</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'skkikaku'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'lG17DwToDvi'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Exception</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Unable to connect.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"connected"</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Create our SFTP resource<br></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token variable">$sftp</span> <span class="token operator">=</span> <span class="token function">ssh2_sftp</span><span class="token punctuation">(</span><span class="token variable">$connection</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Exception</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Unable to create SFTP connection.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"connected2"</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token variable">$files</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token variable">$dirHandle</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ssh2.sftp://<span class="token interpolation"><span class="token variable">$sftp</span></span>/home/skkikaku/csv/"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Properly scan through the directory for files, ignoring directory indexes (. & ..)<br></span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token constant boolean">false</span> <span class="token operator">!==</span> <span class="token punctuation">(</span><span class="token variable">$file</span> <span class="token operator">=</span> <span class="token function">readdir</span><span class="token punctuation">(</span><span class="token variable">$dirHandle</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$file</span> <span class="token operator">!=</span> <span class="token string single-quoted-string">'.'</span> <span class="token operator">&&</span> <span class="token variable">$file</span> <span class="token operator">!=</span> <span class="token string single-quoted-string">'..'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token variable">$files</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$file</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$files</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token variable">$files</span> <span class="token keyword">as</span> <span class="token variable">$fileName</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Remote stream<br></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token variable">$remoteStream</span> <span class="token operator">=</span> @<span class="token function">fopen</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ssh2.sftp://<span class="token interpolation"><span class="token variable">$sftp</span></span>/home/skkikaku/csv/<span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'r'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Exception</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Unable to open remote file: <span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Local stream<br></span> <span class="token function">chmod</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/localdir/$fileName'</span><span class="token punctuation">,</span> <span class="token number">0777</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token variable">$localStream</span> <span class="token operator">=</span> @<span class="token function">fopen</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span><span class="token operator">.</span><span class="token string double-quoted-string">"/localdir/<span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'w'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Exception</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Unable to open local file for writing: /localdir/<span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Write from our remote stream to our local stream<br></span> <span class="token variable">$read</span> <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token variable">$fileSize</span> <span class="token operator">=</span> <span class="token function">filesize</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"ssh2.sftp://<span class="token interpolation"><span class="token variable">$sftp</span></span>/home/skkikaku/csv/<span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token variable">$read</span> <span class="token operator"><</span> <span class="token variable">$fileSize</span> <span class="token operator">&&</span> <span class="token punctuation">(</span><span class="token variable">$buffer</span> <span class="token operator">=</span> <span class="token function">fread</span><span class="token punctuation">(</span><span class="token variable">$remoteStream</span><span class="token punctuation">,</span> <span class="token variable">$fileSize</span> <span class="token operator">-</span> <span class="token variable">$read</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Increase our bytes read<br></span> <span class="token variable">$read</span> <span class="token operator">+=</span> <span class="token function">strlen</span><span class="token punctuation">(</span><span class="token variable">$buffer</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Write to our local file<br></span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">fwrite</span><span class="token punctuation">(</span><span class="token variable">$localStream</span><span class="token punctuation">,</span> <span class="token variable">$buffer</span><span class="token punctuation">)</span> <span class="token operator">===</span> <span class="token constant boolean">FALSE</span><span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">Exception</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"Unable to write to local file: /localdir/<span class="token interpolation"><span class="token variable">$fileName</span></span>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token operator"><</span>br<span class="token operator">></span> <span class="token comment">// Close our streams<br></span> <span class="token function">fclose</span><span class="token punctuation">(</span><span class="token variable">$localStream</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token function">fclose</span><span class="token punctuation">(</span><span class="token variable">$remoteStream</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span> <span class="token punctuation">}</span><span class="token operator"><</span>br<span class="token operator">></span></span> |
PHP Cách download files từ một server sftp về local
- Tram Ho