如何在没有用户输入的情况下从浏览器上传php文件

时间:2014-05-13 08:07:00

标签: php csv file-upload

我正在开发一个php web应用程序。 我需要将文件上传到Web服务器,并提供客户信息 - customers.csv。 但这个过程需要自动化,

该文件将在销售点应用程序中生成,应用程序可以打开带有网址的浏览器窗口...

首先我教过我会做这样的事情www.a.com/upload/&file=customers.csv 但请在此处阅读,这是不可能的,

然后我教我将为文件上传字段设置一个值并在x秒后自动提交表单。发现那是不可能的。

任何有解决方案的人都将不胜感激。

编辑

我试过这个并且它有效,文件被上传到远程服务器 它是否工作只是因为php脚本在csv所在的同一台PC上运行???

$file = 'c:\downloads\customers.csv';
                $remote_file = 'customers.csv';

                // set up basic connection
                $conn_id = ftp_connect('host.com');

                // login with username and password
                $login_result = ftp_login($conn_id,'user','password');

                // upload a file
                if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
                 echo "successfully uploaded $file\n";
                } else {
                 echo "There was a problem while uploading $file\n";
                }

                // close the connection
                ftp_close($conn_id);

3 个答案:

答案 0 :(得分:2)

这当然是可能,想象一下如何滥用这个来上传linux,例如 / etc / passwd 。可能的唯一方法是使用Java Applet,但这肯定不是最好的方法。

您可以尝试让您的PoS应用程序使用customers.csv文件发出 Web请求并让 WebAPI 处理上传,这可能是可能的,但我可以与销售点申请没有任何关系。

如果上面的解决方案不能被考虑,最好的可能就是提示用户提供上面的文件并检查名称+内容是否正确。

答案 1 :(得分:1)

这有点棘手,但如果您的CSV不太长,您可以在base64中对其进行编码,作为GET参数发送到Web服务器,然后在服务器端解码并将其存储为CSV文件。

如果文件太大而无法执行此操作,则必须使用其他方法,例如@ D.Schalla指向的Java applet,甚至安装和配置FTP服务器,并使Point of Sale应用程序上传文件。

其他替代方案,特别好,如果您无法修改销售应用程序,是在客户端安装Web服务器并编写一个小的PHP脚本来处理上传过程。通过这种方式,销售应用程序可以调用本地URL(类似于:http:// localhost / upload.php),这个脚本负责上传文件,可以通过经典的HTTP POST,FTP实现连接或您可以考虑的任何其他方式。

答案 2 :(得分:0)

我的解决方案,无需在客户端设置Web服务器。

这适用于Windows,但可以适应linux

在客户端

本地应用程序打开cmd并运行此命令 ftp -n -s:C:\ test.scr

WHICH打开test.scr - 一个带有ftp命令的文件,例如。

open host.com
user1
passwOrd
put C:\downloads\customers.csv public_html/customers.csv

更多信息: http://support.microsoft.com/kb/96269

更多命令: http://www.nsftools.com/tips/MSFTP.htm#put