我想使用AngularJS和PHP将图像上传到FTP。我在这里找到了两个解决方案,使用AngularJS的$ http服务,并使用vanilla JS XMLHttpRequest对象。他们两个都返回403。
然后我将FTP文件夹权限更改为777但得到了相同的结果。
我认为它需要身份验证,所以我认为我会使用PHP来发送文件,但我无法想象如何将File对象发送到PHP。说实话,我甚至不确定这是否合理。
任何人都可以帮助我吗?
这是我的代码:
首先我得到这样的File对象:
var formData = new FormData();
var file = document.querySelector("input[type='file']").files[0];
formData.append("file", file);
然后我使用AngularJS或vanilla。
AngularJS解决方案:
$http.post('./img', formData, {
transformRequest: angular.identity,
headers: {
'Content-Type': undefined
}
}).then(/* promise handler */)
香草溶液:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "./img", true);
xmlHttp.send(formData);
我也试过这个解决方案:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "php_file.php", true);
xmlHttp.send(formData);
我以为我会将File对象发布到PHP并使用它来上传凭证,但是当我“print_r($ _ FILES)”时它会给我一个空对象。
更新:我使用“将文件对象发送到PHP”方法,我想我没有正确记录输出,所以我认为它没有做任何事情。在发布到PHP文件后,我只使用了move_uploaded_file()函数,并且不必验证FTP或其他任何东西,所以我仍然不明白为什么我会使用其他方法获得403。
任何想法?
谢谢!
答案 0 :(得分:1)
发送文件的FTP方法是PUT,而不是POST。 然后,您需要通过编写URL ftp://mywebsite.com/img来指定要使用FTP协议。如果不这样做,则向./img发送POST请求,这似乎是禁止使用HTTP服务器的。