无法使用AngularJS和PHP在FTP上传图像。返回403

时间:2016-01-17 15:39:33

标签: javascript php angularjs ftp

我想使用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。

任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

发送文件的FTP方法是PUT,而不是POST。 然后,您需要通过编写URL ftp://mywebsite.com/img来指定要使用FTP协议。如果不这样做,则向./img发送POST请求,这似乎是禁止使用HTTP服务器的。