有没有办法将角度js中的文件转换为字节?
我想上传一个文件(字节)到服务器。有没有办法将这个从ui端转换,我使用角js? 我使用的Api是用ASP.new完成的,我的sql表中有字段: FileName(string)和File(字节集合)。 这是我迄今有没有办法将角度js中的文件转换为字节?
$scope.upload = function(){
var file = $scope.myFile;
var fileName=file.name;
Upload.uploadFile((file), uploadUrl,fileName);
};
App.service('fileUpload', ['$http', function ($http) {
this.uploadFile = function(File, uploadUrl,fileName){
var fd = new FormData();
console.log(File); //returns {}
fd.append('File', new Uint8Array(File));
var data ={
FileName : fileName,
};
fd.append("FileName", JSON.stringify(data.FileName));
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': 'application/json'}
})
}
}]);
不知道试过这是否会满足您的需求,但我假设你只需要使用一个角上传文件。直到我找到一个叫做ng-file-upload的小指令时,我自己遇到了问题。使用起来很简单,包括甚至为旧版浏览器提供回退。
希望可以帮到:)
我的服务器接受文件为字节...我不需要先将它转换成先发送到服务器之前? – aye26
您应该在原始文章中指定您的服务器环境和后端语言,特别是因为其他人在说它太宽泛。 – TheAssailant
我也编辑了我的问题 – aye26
我同意,ng-file-upload很不错。我也类似地发布我的文件到base64字符串作为我的json对象的“file_content”的数据库。使用从ng-file-upload(或正常的<input type="file"/>
)生成的FileList *对象,我使用FileReader *对象将文件作为DataUrl读取(FileReader还有其他一些readAs方法)。
注意:我也使用LoDash *(_.last和_.split)。
uploadFile() {
var reader = new FileReader();
reader.onload = (event) => {
var data = {
file_id: 1,
//strip off the first part ("data:[mime/type];base64,") and just save base64 string
file_content: _.last(_.split(event.target.result, ','));,
file_name: this.file.name,
mime_type: this.file.type
}
/*... POST ...*/
};
//this.file is my model for ng-file-upload
reader.readAsDataURL(this.file);
}
http://jsfiddle.net/eliseosoto/JHQnk/
再后来要下载的文件,我用FileSaver.js *的saveAs:
downloadFile(fileFromDB) {
var convertDataURIToBinary =() => {
var raw = window.atob(fileFromDB.file_content);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for (var i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
var bin_array = convertDataURIToBinary();
saveAs(new Blob([bin_array], { type: fileFromDB.mime_type }), fileFromDB.file_name);
}
*对不起,我的名声不够高张贴链接到所有这些,但你可以谷歌他们,它应该是第一个结果
这个问题太广泛了,与angularjs无关。但是你可能想看看File&Blob规范。 – fdreger