2012-12-04 138 views
0

我正在参与一个涉及超市系统的学校项目,我有一个Shop PC(localhost)和一个HQ服务器(托管在Amazon EC2上)。其中一个要求是Shop PC会生成一个交易文件(我有一个生成文件的按钮),并且该文本文件需要发送到总部服务器。我在HQ服务器上创建了一个具有777权限的文件夹。我试图简单地使用PHP的复制函数将文件发送/上载到该文件夹​​,但这不起作用。任何线索我如何做到这一点?我没有在亚马逊上安装ftp,因此无法按照要求来执行此操作。使用PHP上传文件到777文件夹使用PHP

此外,由于店员无法访问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上创建我想将它发送到总部服务器,在那里它可以被解析并添加到总部数据库。要发送文件到上传在总部的服务器文件夹,我遵循上面的代码:

$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 

也许在某种程度上可以直接送到这里的交易文件进行解析和更新,而不将其存储在上传文件夹?

回答

1

文件传输是否有错误的写入/读取/执行属性或根本没有?

如果文件没有得到传输你检查了PHP日志错误?

如果你使用的是复制,那么我假设你已经安装了分区,所以你可以直接访问HQ服务器上的文件,如果不是,你可以尝试设置你的PHP接收文件,看看这个:

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

如果你没有在服务器上的PHP,你如何访问它的文件?

+0

该文件根本不会被传输。 看到以前的评论我想我不能使用复制,因为我试图将文件从本地服务器复制到远程服务器。另外,如果我创建一个表单,那么上传将需要手动完成? – Saurabh

+0

是的,但是如何访问HQserver上的文件? – Ogelami

+0

事务文件将被解析使用在PHP编写的解析器,然后细节将被用来更新该商店的数据库 – Saurabh

0

在Shop PC中生成文件并将其存储在HQ服务器可以访问(读取)的地方。

PHP命令copy应该在总部服务器中用于从Shop PC获取文件。

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

请注意,您需要allow_url_fopen必须处于php.ini= on

+0

这将涉及总部管理员手动检查每个商店PC,如果它有一个交易文件或没有。不是可扩展的解决方案 – Saurabh

+0

在生成文件后,您的商店PC可能会向HQ服务器发送HTTP请求,因此我们可以确保存在交易文件。 –