- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我一直在尝试获取 ngFileUpload工作以便我可以上传图像并将它们发送到数据库——在我的例子中是 mongoLab接受 JSON 对象的数据库,可以使用如下语法POST
ed:
$http.post('myMongoName/myDb/myCollection/myTable', {'key': 'value'})
相当简单。但是,我对如何将使用 ngFileUpload
上传的图像发送到数据库感到困惑。我正在使用 ngFileUpload 文档页面上介绍的熟悉语法:
$scope.upload = function (files) {
if (files && files.length) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
console.log(file);
Upload.upload({
url: myMongoLabURL,
fields: {'sup': 'sup'},
file: file
})
}).success(function (data, status, headers, config) {
console.log('file ' + config.file.name + 'uploaded. Response: ' + data);
});
}
}
}
但是,在记录 file
对象后,我得到了对象:
File {}
$$hashKey: "object:76"
lastModified: 1433922719000
lastModifiedDate: Wed Jun 10 2015 00:51:59 GMT-0700 (PDT)
name: "1.png"
size: 138024
type: "image/png"
webkitRelativePath: ""
__proto__: File
它们都不包含可以存储到数据库中的实际图像二进制文件。我基本上不知道实际图像本身实际上传到哪里!
同样重要的是要注意,我没有使用这种语法从服务器获得响应——不过,如果我可以获得图像的二进制文件,我可以只使用熟悉的 $http.post
方法和自己将图像推送到数据库中。
如何找到上传图片的二进制文件,并将其推送到数据库中?图片在上传后存在于何处——甚至上传到哪里?我在 localhost
上做这一切,所以浏览器似乎已经读取了图像的所有属性,但我不确定如何将其转化为有意义的洞察力,我可以用它来存储图像到我的外部数据库中。
感谢您的帮助。
最佳答案
我最终使用了 FileReader API .最具体地说,将 URI 读取为 blob
。我在自定义指令中实现了如下内容。我最终包括了很多 attrs
读物,这将允许在同一页面上的独立范围内多次使用该指令——但我会把它留在这里。如果对您有帮助,我可以为您提供整个指令——但简而言之,它看起来像这样:
function create_blob(file) {
var deferred = $q.defer();
var reader = new FileReader();
reader.onload = function() {
deferred.resolve(reader.result);
};
reader.readAsDataURL(file);
return deferred.promise;
}
$scope.$watch('files', function() {
$scope.upload($scope.files);
});
$scope.upload = function(files) {
$scope.loading = true;
if (files && files.length) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
var promise = create_blob(file);
promise.then(function(result) {
var thumb = resize(result);
Upload.http({
url: '/path',
data: result
})
.progress(function (evt) {
console.log(evt);
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
console.log('progress: ' + progressPercentage + '% ');
})
.success(function (data, status,headers,config) {
...等等
我想这会为你做的。获取 blob
数据可能会造成混淆,因为当您上传图像时,您在范围内看不到它的任何数据——尽管图像的其余元数据会显示出来!这个 create_blob
函数应该以 blob 格式为您获取它。尝试在该函数内执行 console.log(reader.readAsDataURL(file);
以直接查看数据。
我花了很长时间才弄清楚,我不确定这是否是最好的方法——如果有人知道更好,请随时提出建议! :-)
关于javascript - AngularJS 上传文件并将其发送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30814562/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!