【问题标题】:Upload file to a 777 folder using PHP使用 PHP 将文件上传到 777 文件夹
【发布时间】:2012-11-21 21:41:42
【问题描述】:

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

另外,我无法在总部管理员上创建上传表单(多部分表单?)来上传文件,因为店员无法访问总部服务器页面。

需要上传文件的文件夹地址是:

"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>");
    }

在讨论后编辑:

总部服务器有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

也许可以通过某种方式直接将事务文件发送到此处进行解析和更新,而不将其存储在上传文件夹中?

【问题讨论】:

    标签: php file-upload amazon-ec2 777


    【解决方案1】:

    在 Shop PC 中生成文件并将其存储在 HQ Server 可以访问(读取)的位置。

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

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

    请注意,allow_url_fopen 必须是 = on in php.ini。

    【讨论】:

    • 这将涉及总部管理员手动检查每台商店 PC,如果它有交易文件。不是可扩展的解决方案
    • 文件生成后,您的店铺PC可能会向HQ Server发送HTTP请求,因此我们可以确定有事务文件。
    【解决方案2】:

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

    如果文件没有被传输,你检查过 php 日志错误吗?

    如果您使用的是副本,那么我假设您已安装分区,因此您可以直接访问总部服务器上的文件,如果没有,您可以尝试设置您的 php 以接收文件,看看这个:

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

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

    【讨论】:

    • 文件根本没有被传输。看到以前的 cmets 我想我不能使用复制,因为我试图将文件从本地服务器复制到远程服务器。另外,如果我创建一个表单,那么上传需要手动完成吗?
    • 交易文件将使用php编写的解析器进行解析,然后详细信息将用于更新该商店的数据库
    • 您可以使用前面提到的 post upload 方法将文件从 php 服务器上传到另一个 php 服务器,如果您想这样做,您可能需要查看 cURL,并在您的php.ini 在您的“客户端”服务器上,查看 curl.haxx.se/docs/httpscripting.html 以获取“4.3 文件上传 POST”
    • 这听起来很完美!我在总部服务器也有一个表格来上传交易文件。我可以直接发布到该表格吗?那将解决问题!您能否详细介绍一下如何使用 CURL 语句
    • 是的,您可以直接发布它们,这里有两个很好的入门参考:se2.php.net/manual/en/book.curl.phpse2.php.net/manual/en/curl.examples-basic.php
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多