2017-04-04 6 views
9

私はこのSQLスクリプトを使用してCSVファイルを生成し、ローカルマシンにダウンロードできますが、私はリモートサーバ(http://myserverblabla.com/uploads)に同時にバックアップコピーを保存するためにそれを保存しますか?それを達成するために私の既存のスクリプトを変更することは可能でしょうか?CSVを生成し、ローカルマシンにダウンロードして同時にサーバーに保存します

include 'class/database.class.php'; 

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/octet-stream"); 
header("Content-Disposition: attachment; filename=\"filename.csv\";"); 
header("Content-Transfer-Encoding: binary"); 

$database = new Database(); 

try{ 
    // Select query 
    $database->query("SOME SQL QUERY"); 
    $data = $database->resultset(); 

    $fp = fopen('php://temp', 'r+'); 
    foreach ($data as $row) { 
     if (! isset($ch)) { 
      foreach ($row as $header => $value) { 
       if (isset($ch)) 
        $ch .= ","; 
        else 
         $ch = ""; 

         $ch .= '"' . addslashes($header) . '"'; 
      } 
     } 
     fputcsv($fp, $row, ",", '"'); 
    } 

    rewind($fp); 
    $csv = fread($fp, 1048576); 
    fclose($fp); 
    echo $ch . PHP_EOL . rtrim($csv, PHP_EOL); 
} 
catch(PDOException $e){ 
    echo json_encode((object)['error'=>true,'message'=>$e->getMessage()]); 
} 
+0

http://myserverblabla.com/uploadsの仕様は何ですか?あなたはそこにsshできますか?あなたはそこでPHPを使用できますか? cvsをダウンロードするにはログインする必要がありますか? – borracciaBlu

答えて

5

私は自分自身を考え出した...:

$fp = fopen('uploads/test.csv', 'w+');

3

簡単な方法でサーバーにファイルをアップロードします。 自動的に行うにはもう少し難しいですが、試してみると何もありません。 これはAJAX、Json、JQuery、ファイルアップロードの少ししか知りません。

、あなたのクライアントに必要な通常のファイルのアップロード:

は、あなたの場合は
<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) { 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
    } else { 
     echo "File is not an image."; 
     $uploadOk = 0; 
    } 
} 
// Check if file already exists 
if (file_exists($target_file)) { 
    echo "Sorry, file already exists."; 
    $uploadOk = 0; 
} 
// Check file size 
if ($_FILES["fileToUpload"]["size"] > 500000) { 
    echo "Sorry, your file is too large."; 
    $uploadOk = 0; 
} 
// Allow certain file formats 
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
&& $imageFileType != "gif") { 
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
    $uploadOk = 0; 
} 
// Check if $uploadOk is set to 0 by an error 
if ($uploadOk == 0) { 
    echo "Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
} else { 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 
} 
?> 

あなたがファイルを取得するインターフェイスを作成する必要はありません:サーバーで

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

サーバ。そのためには、いくつかのajaxとjsonまたはJquery File Uploadを使用する必要があります。

exemplesのサイトをご覧ください。

私はそれのようなことをしようとしましたが、私はajax投稿に固執しました。それはフォーム内でのみ機能しました。ファイルをサーバーに送信する方法です。

最初のコードを作成すると、最初の問題が発生したときに私は助けようとしています。 2つのヘッドは1つより良好に動作します。

5

生成するファイルを単にコピーしてみませんか?直後copy(your file $fp, destination dir/filename);のようなものを挿入して、あなたの私は、CSVファイルをサーバーにファイルを保存するためにfopen機能を変更した

fclose($fp);

2

Iコードを変更しました:

include 'class/database.class.php'; 

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/octet-stream"); 
header("Content-Disposition: attachment; filename=\"filename.csv\";"); 
header("Content-Transfer-Encoding: binary"); 

$database = new Database(); 

try{ 
    // Select query 
    $database->query("SOME SQL QUERY"); 
    $data = $database->resultset(); 

    ob_start(); 
    $fp = fopen('path/to/folder/filename.csv', 'w'); 
    foreach ($data as $row) { 

     if (! fputcsv($fp, $row)) 
     { 
      show_error("Can't write line $n: $line"); 
     } 
    } 
    fclose($fp) or show_error("Can't close path/to/folder/filename.csv"); 
    $str = ob_get_contents(); 
    ob_end_clean(); 
    print "\xEF\xBB\xBF"; // UTF-8 BOM 
    print $str; 
} 
catch(PDOException $e){ 
    echo json_encode((object)['error'=>true,'message'=>$e->getMessage()]); 
} 

また、csvフォルダshoul dは書き込みと読み取りの許可を持っています。

関連する問題