所以我有一个具有以下代码的控制器,下面的部分基本上只是从input
字段获取文件并将其存储在文件对象中:
控制器:
$scope.Object = {};
$scope.Object.name = "Joe";
$scope.Object.file = "";
$scope.uploadFile = function()
{
var reader = new FileReader();
reader.onloadend = function()
{
console.log(reader.result);
}
reader.readAsBinaryString($("fileToUpload")[0].file[0]);
$scope.Object.file = reader.result;
var uploadPromise = $scope.myService.uploadFile($scope.Object);
uploadPromise.then(function(success) {
//do something
}, function(failure)
{
//do something else
});
}
serviceInstance.uploadFile = function(object)
{
var deferred = $q.defer();
$http.put(urlPath, object, {
cache: false,
responseType: "json"
}).success(function(data) {
deferred.resolve(data);
}).error(function(data, statusCode) {
deferred.reject((statusCode: statusCode, data: data));
});
return deferred.promise;
};
但最终发生的是我得到了一个安全异常0x80530012
它的状态是The operation is insecure.
我只是想知道是否有一个变通办法,我可以在这里使用javascript对象传递回文件?
正如在其他地方回答的那样,您不能直接从JavaScript加载文件字段的值。要实现这一点,就需要允许脚本直接访问磁盘。与直接将uploadFile函数作为http.put()运行不同,您需要将该文件作为文件输入字段放入,并提交该表单。