由于我是AngularJS的新手,所以我不知道如何使用AngularJS在MVC中上传文件。我正在尝试上传一些没有任何特定类型或扩展名的文件,但失败了。
我创建了一个JavaScript文件,该文件具有-
这是serviceJS-
var app = angular.module("app", []);
app.service('FileUploadService', ['$http', function ($http) {
this.uploadFileToUrl = function (file, uploadUrl) {
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
})
.success(function () {
})
.error(function () {
});
}
}]);
这是控制器部分-
app.controller('FileUploadController', ['$scope', 'FileUploadService', function($scope, FileUploadService) {
$scope.uploadFile = function () {
var file = $scope.myFile;
console.log('file is ');
console.dir(file);
var uploadUrl = "/Home/FileUploadFromAngular";
FileUploadService.uploadFileToUrl(file, uploadUrl);
};
}]);
并且,在查看页面中,
<script src="~/Scripts/angular.min.js"></script>
<script src="~/Scripts/AngScript/FileUpload.js"></script>
<script src="~/Scripts/angular-ui/ui-bootstrap.min.js"></script>
<div ng-controller="FileUploadController">
<input type="file" ng-model="myFile" />
<button ng-click="uploadFile()">Upload</button>
</div>
它在控制器中将 myFile 设为未定义。我无法调试。
提前致谢。
您不能将绑定<input type="file">
到$scope
变量。您将需要创建一个指令来捕获onchange event
文件输入标签的。例如<input type="file" name="myFile" file-upload/>
,伪指令如下所示:
angular.module("app.directives", []).directive('fileUpload', function () {
return {
scope: true,
link: function (scope, el, attrs) {
el.bind('change', function (event) {
var files = event.target.files;
//iterate files since 'multiple' may be specified on the element
if(files.length == 0){
scope.$emit("fileSelected", { file: null, field: event.target.name });
} else{
for (var i = 0;i<files.length;i++) {
//emit event upward
scope.$emit("fileSelected", { file: files[i], field: event.target.name });
}
}
});
}
};
});
之后,您可以像这样在控制器中捕获广播:
$scope.$on("fileSelected", function (event, args) {
$scope.$apply(function () {
switch (args.field) {
case "myFile":
$scope.myFile = args.file;
break;
default:
break;
}
});
});
您的服务方法可以是这样的:
this.uploadFileToUrl = function (file, uploadUrl) {
return $http({
method: 'POST',
url: uploadUrl,
headers: { 'Content-Type': undefined },
transformRequest: function() {
var formData = new FormData();
if(file){
formData.append("myFile", file);
}
return formData;
}
})
}
问题内容: 我有一个Java Spring MVC Web应用程序作为服务器。并且基于AngularJS的应用程序作为客户端。 在AngularJS中,我必须上传文件并发送到服务器。 这是我的 html 这是我的 UploadController.js 它要发送到服务器。这是我的 DocumentUploadController.java 运行此命令时,出现以下异常 在我的 application
需要数据库集成代码(CRUD操作) 如何使用SpringMVC上传Excel文件?MultipartFile类提供了对上载文件的详细信息的访问,包括文件名、文件类型等。我们可以使用简单的HTML页面显示以下信息: 我们还可以将其他信息与上载的文件一起发送到服务器。我们只需在表单中包含必填字段: 文件上传服务。JAVA
这是我的超文本标记语言形式: 我想从本地机器上传图像,并希望读取上传文件的内容。所有这些我都想使用AngularJS来完成。 当我试图打印它是未定义的。
问题内容: 这是我的HTML表单: 我想从本地计算机上传图像,并想读取上传文件的内容。我想使用AngularJS进行的所有操作。 当我尝试打印时,它的值是未定义的。 问题答案: 这里的一些答案建议使用,但不幸的是,这是Internet Explorer 9及更低版本中不可用的浏览器对象。如果需要支持那些较旧的浏览器,则需要使用或使用Flash 的备份策略。 已经有许多Angular.js模块可以执
我正在尝试使用多部分实体方法上传文件。但它失败,错误说{“错误”:“文件参数值'无'无效”} 我的代码是: File File = new File(" C:/Users/SST-06/Desktop/new . txt "); 我的实体文件包含所有提到的参数。 -hkYO-pblk 0 uqlxjtvklrbkosxz 7 mye-8 wbvbvanx Content-Disposition:f
问题内容: 我发现了以下很棒的主题,并解释了如何使用新的HTML5 FormDataAPI通过AJAX / Jquery上传文件 这是该代码的稍有更新的版本,具有更新的JQuery 1.8+语法 这是表格 在服务器端,我们有类似的东西。 这很好。直到您决定在文件对话框中使用“多个”属性,然后发送多个文件。 您会在网上找到各种页面,提出以下解决方案 哎呀。不起作用 不。不起作用 甚至不 编译 你猜怎