0

私はスーパーマーケットシステムを含む学校のプロジェクトに取り組んでおり、Shop PC(localhost)とHQサーバー(Amazon EC2でホストされている)を持っています。要件の1つは、Shop PCがトランザクションファイルを生成し(ファイルを生成するボタンがあります)、そのテキストファイルをHQサーバーに送信する必要があることです。HQサーバー上に777のアクセス許可を持つフォルダーを作成しました。PHPのコピー機能を使用して、ファイルをそのフォルダーに送信/アップロードしようとしましたが、機能しません。どうすればそれができるかについての手がかりはありますか?私はAmazonにftpをインストールしておらず、要件に従ってそれを行うことができません。

また、ショップの人がHQサーバーのページにアクセスできないため、HQ admimにアップロードフォーム(マルチパートフォーム?)を作成してファイルをアップロードすることはできません。

ファイルをアップロードする必要があるフォルダのアドレスは次のとおりです。

"site address"/uploads

次の方法でトランザクションファイルを作成します。

$ourFileName = "transaction.txt";
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
    //fwrite($fh, $stringData);

    $sql = mysql_query("the query");

    while($row=mysql_fetch_array($sql)){
        $stringData = "data";
        fwrite($ourFileHandle, $stringData);
    }

    fclose($ourFileHandle);

このファイルはショップPCで作成されており、HQサーバーに送信したいのですが、そこで解析してHQデータベースに追加できます。HQサーバーのuploadsフォルダーにファイルを送信するには、上記のコードに従ってください。

$filename = "news.txt";
    $newfile = "siteaddress/uploads/" . $filename;
    if(copy($ourFileName, $newfile)) 
    {
    print("<h3> UPLOAD SUCCESSFUL!</h3>");
    } 
    else
    {
    print("<h3>ERROR UPLOADING FILE!</h3>");
    }

ディスカッションに従って編集します。

HQサーバーにはphpがあります。実際、parse_transaction.phpで定義されたファイルパーサーがあり、次のように始まります。

<?php
include "../storescripts/connect_to_mysql_HQ.php"; 
mysql_query($sql);
mysql_query($sql2);
mysql_query($sql3);

$filename= mysql_real_escape_string($_FILES["file"]["tmp_name"]);

$lines = file($filename); // slurp file and split into an array by lines

おそらく、アップロードフォルダに保存せずに、解析と更新のためにトランザクションファイルをここに直接送信することは可能ですか?

4

2 に答える 2

1

ファイルは間違った書き込み/読み取り/実行属性で転送されますか、それともまったく転送されませんか?

ファイルが転送されない場合は、PHPログエラーをチェックしましたか?

コピーを使用している場合は、パーティションがマウントされているため、HQサーバー上のファイルに直接アクセスできると思います。そうでない場合は、ファイルを受信するようにphpを設定してみてください。これを見てください。

http://php.net/manual/en/features.file-upload.post-method.php

また、サーバーにphpがない場合、どのようにしてそのファイルにアクセスしますか?

于 2012-12-04T10:07:23.673 に答える
0

Shop PCでファイルを生成し、HQサーバーからアクセス(読み取り)できる場所に保存します。

copyShop PCからファイルを取得するには、HQサーバーでPHPコマンドを使用する必要があります。

copy('http://somedomain.com/transaction.txt', '/tmp/transaction.txt');

にいる必要allow_url_fopenがあること= onに注意してくださいphp.ini

于 2012-12-04T10:18:35.603 に答える