如何在php中通过命令行下载文件?

时间:2016-02-10 10:35:02

标签: php file

我想在我的客户端机器上粘贴一个脚本,该机器调用我服务器上的php文件。

我的服务器路径是www.google.com/support/lokesh.php

因此,我想将一个文件放在我调用php文件的所有客户端机器上(例如,如果它从/home/lalu/myscript.sh调用),那么我的php代码将放置一个文件(附加。 sh)到/home/lalu/additional.sh

下面是我下载文件的代码

<DataTemplate x:Key="IntTemplate">
   <StackPanel>
      <Label Content="I am int"/>
      <TextBlock Text="{Binding Path=.}"/>
   </StackPanel>
</DataTemplate>
<DataTemplate x:Key="BooleanTemplate">
   <StackPanel>
      <Label Content="Xo-xo Bool"/>
      <CheckBox IsChecked="{Binding Path=.}"/>
   </StackPanel>
</DataTemplate>

我想在客户端计算机上粘贴一个文件位置,从那里调用服务器文件。

3 个答案:

答案 0 :(得分:0)

在我看来,最简单的方法是:

for(var i = 0; i<array.length; i++){
   if(array[i]["ID"] == yourobject["ID"]){
       array.splice(i,1);
   }
}

如果我理解正确的话。

答案 1 :(得分:0)

一次尝试,带有进度条。

Debug.Print ""
Debug.Print "My text"

enter image description here

该文件直接构建到当前文件夹中,而不是在临时目录中。 这意味着可以在下载时读取文件。 如果文件类型处理它,就像大多数媒体格式一样。

要使用,请在命令行中将url作为第一个参数传递。

#!/usr/bin/php
<?php
if (@$argv[1] != null){
  echo "Retrieving http header..."; 
  $header = get_headers("$argv[1]");
  $pp = "0";
  echo json_encode($header, JSON_PRETTY_PRINT);
  $key = key(preg_grep('/\bLength\b/i', $header));
  $type = key(preg_grep('/\bType\b/i', $header));
  $http = substr($header[0], 9, 3);
  $tbytes = @explode(" ",$header[$key])[1];
  $type = @explode("/",explode(" ",$header[$type])[1])[1];
  echo " Target size: ".floor((($tbytes / 1000)/1000))." Mo || ".floor(($tbytes/1000))." Kb";
  $t = explode("/",$argv[1]);
  $remote = fopen($argv[1], 'r');
  $nm = $t[count($t)-1].".$type";
  $local = fopen($nm, 'w');
  $read_bytes = 0;  
  echo PHP_EOL;
  while(!feof($remote)) {
    $buffer = fread($remote, intval($tbytes));
    fwrite($local, $buffer);
    $read_bytes += 2048;
    $progress = min(100, 100 * $read_bytes / $tbytes);
    $progress = substr($progress,0 , 6) *4;
    $shell = 10; /* Progress bar width */ 
    $rt = $shell * $progress / 100;
    echo " \033[35;2m\e[0m Downloading: [".round($progress,3)."%] ".floor((($read_bytes/1000)*4))."Kb ";
    if ($pp === $shell){$pp=0;};
    if ($rt === $shell){$rt=0;};
    echo str_repeat("█",$rt).str_repeat("=",($pp++)).">@\r";
    usleep(1000);
  }
  echo " \033[35;2m\e[0mDone [100%]  ".floor((($tbytes / 1000)/1000))." Mo || ".floor(($tbytes/1000))." Kb   \r";
  echo PHP_EOL;
  fclose($remote);
  fclose($local);
}

你知道你想调整它;)

答案 2 :(得分:-1)

试试这段代码。在您的下载文件中:

header("Pragma: public");
header("Expires: 0");  
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
header("Cache-Control: private",false);
header("Content-Type: application/".$extension); // you can put here MIME type of your file  
header("Content-Disposition: attachment; filename=\"" . basename($filePath) . "\";" );  
header("Content-Transfer-Encoding: binary");  
header("Content-Length: ".filesize($filePath));  
set_time_limit(0);  
readfile("$filePath");