我想从在线系统保存文件并将其保存到特定的,例如。 C:/ MyFolder文件/。因此,如果在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);
}
答案 0 :(得分:2)
简单地说,你不能用php或任何其他服务器端语言来做。
编辑: Reason是简单的服务器端应用程序,脚本只能访问启动它们的本地资源。因此,当您在本地计算机上运行应用程序时,一切都可以按照您的意愿运行。但由于HTTP的工作原理以及出于安全原因,您无法访问用户本地文件。
答案 1 :(得分:0)
您可以创建一个与您的服务器交互的桌面应用程序,这样您就可以执行此类操作。
答案 2 :(得分:0)
您无法告诉用户保存您发送的文件的位置。即使使用JavaScript。服务器站点语言可以通过defaylt.But来操纵服务器上的文件而不是客户端机器上的文件。无论如何,如果没有客户端的权限,就无法访问客户端的文件。可能这可以通过ActiveX组件完成,但客户端应该同意并接受此操作。否则,现在你的计算机将比你的文件有更多的病毒。因此,浏览器为安全浏览提供了受保护的环境。您已经设置了要发送的文件的名称...所以这是您可以在服务器端执行的最大值。