我正在开发一个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);
答案 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