-1

我想从在线系统中保存一个文件并将其保存到特定的,例如。C:/我的文件夹/。因此,如果 C:/ 中没有 myFolder 名称,系统会自动检测并创建 C 盘中的文件夹,并将文件保存到该文件夹​​中。当我在本地尝试系统时,它可以将文件夹和文件创建到 C 驱动器中。

但是当它将我的文件上传到服务器时,该文件夹是在服务器中创建的,而不是在本地计算机中。谁能帮我解决这个问题?如何在本地计算机中创建一个文件夹并将文件从在线系统保存到该文件夹​​中?

以下是系统在本地运行时的代码:

$directory = 'C:/sales/'.$filename.'.txt';

$path_name = 'C:/sales/';

if ( ! is_dir($path_name)) {
    mkdir($path_name);
}

if(mysql_num_rows($query))
{
    $fp = fopen($directory, 'w');

    if($fp)
    {
        for($i = 0; $i < mysql_num_rows($query); $i++)
        {
            $f = mysql_fetch_array($query);

            $orderFee_q = mysql_query("select * from sales_order where status in ('waiting', 'waiting1', 'waiting2', 'approved') and outstanding = 'N' order by so_no desc");
            $get_orderFee = mysql_fetch_array($orderFee_q);

            $line = $f["id"]."\t".$f["so_no"];

            if(trim($line) != '') {fputs($fp, $line."\r\n");}
        }
    }

    fclose($fp);
}


$download_name = basename($filename);

if(file_exists($filename))
{
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: Binary');
header("Content-Disposition: attachment; filename=".$download_name);
header('X-SendFile: '.$filename);
header('Pragma: no-cache');
header("Expires: 0");
readfile($filename);
}   
4

3 回答 3

2

简单地说,你不能用 php 或任何其他服务器端语言来做到这一点。

编辑:原因是简单的服务器端应用程序和脚本只能访问它们启动的本地资源。因此,当您在本地计算机上运行应用程序时,一切都会如您所愿。但是由于 HTTP 的工作方式以及出于安全原因,您无法访问用户本地文件。

于 2012-10-23T08:09:18.483 回答
0

您无法告诉用户将您发送的文件保存在哪里。即使使用 JavaScript。服务器站点语言可以默认操作服务器上的文件,而不是客户端机器上的文件。但是无论如何,没有客户端的许可是不可能访问客户端的文件的。这可能由 ActiveX 组件完成,但客户端应同意并接受此操作。否则到目前为止,您的计算机将比您的文件具有更多病毒。因此,浏览器为安全浏览提供了受保护的环境。您已经设置了要发送的文件的名称......所以这是您在服务器端可以做的最大可能。

于 2012-10-23T08:23:35.143 回答
0

您可以创建一个与您的服务器交互的桌面应用程序,这将允许您执行类似的操作。

于 2012-10-23T08:14:54.490 回答