是否存在一个良好的文件上传器,并且具有良好的AngularJS集成(指令)?
我正在寻找易于样式设置并支持HTML5拖放等功能的东西。
有人可能会说,使用现有的上载器并将其集成到AngularJS中很容易-我会说:如果这很容易,那么有人应该已经做到了。
实际上,我曾经滚动过自己的上载器……但仅是因为我不喜欢任何已经制成的JQuery上载器。不幸的是,这是专有的,我无法在互联网上发布它……但是……我可以向您展示如何使用Angular的几乎所有JQuery插件:
可能有人会说,使用现有的上载器并将其集成到AngularJS中很容易-我会说:如果这很容易,那么有人应该已经做到了。
假设我有一个jQuery插件,可以通过选择一个div并调用pluginUploadCall()
它来工作…
app.directive('myJqueryPluginUploader', function() {
return {
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
// elem is a jQuery lite object
// or a jQuery object if jQuery is present.
// so call whatever plugins you have.
elem.pluginUploadCall();
}
};
});
这就是它的用法。
<div my-jquery-plugin-uploader></div>
Angular实际上与jQuery集成得非常好,因此任何在jQuery中工作的插件都应该在Angular中很容易地工作。想要保持DependencyInjection有效,以便使AngularApp处于可测试状态,这是唯一的棘手问题。jQuery在DI方面不是很擅长,因此您可能不得不跳过一些麻烦。
如果您想自己动手,我可以告诉您我做了这样的事情:
app.directive('customUploader', function(){
return {
restrict: 'E',
scope: {},
template: '<div class="custom-uploader-container">Drop Files Here<input type="file" class="custom-uploader-input"/><button ng-click="upload()" ng-disabled="notReady">Upload</button></div>',
controller: function($scope, $customUploaderService) {
$scope.notReady = true;
$scope.upload = function() {
//scope.files is set in the linking function below.
$customUploaderService.beginUpload($scope.files);
};
$customUploaderService.onUploadProgress = function(progress) {
//do something here.
};
$customUploaderService.onComplete = function(result) {
// do something here.
};
},
link: function(scope, elem, attr, ctrl) {
fileInput = elem.find('input[type="file"]');
fileInput.bind('change', function(e) {
scope.notReady = e.target.files.length > 0;
scope.files = [];
for(var i = 0; i < e.target.files.length; i++) {
//set files in the scope
var file = e.target.files[i];
scope.files.push({ name: file.name, type: file.type, size: file.size });
}
});
}
});
您在其中$customUploaderService
创建的自定义服务Module.factory()
将$http
用于发布文件并检查服务器上的进度。
我知道这很模糊,很抱歉我能提供所有这些,但是希望对您有所帮助。
编辑:拖放文件上传是CSS,BTW的一个技巧,对于Chrome和FF,您要做的是将其放入包含div的文件中……然后执行以下操作:
<div class="uploadContainer">Drop Files Here<input type="file"/></div>
div.uploadContainer {
position: relative;
width: 600px;
height: 100px;
}
div.uploadContainer input[type=file] {
visibility: hidden;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
…现在,您在该div上放置的所有内容实际上都会在文件上传中删除,您可以使div看起来像您想要的任何内容。
这是我的超文本标记语言形式: 我想从本地机器上传图像,并希望读取上传文件的内容。所有这些我都想使用AngularJS来完成。 当我试图打印它是未定义的。
问题内容: 这是我的HTML表单: 我想从本地计算机上传图像,并想读取上传文件的内容。我想使用AngularJS进行的所有操作。 当我尝试打印时,它的值是未定义的。 问题答案: 这里的一些答案建议使用,但不幸的是,这是Internet Explorer 9及更低版本中不可用的浏览器对象。如果需要支持那些较旧的浏览器,则需要使用或使用Flash 的备份策略。 已经有许多Angular.js模块可以执
问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。
问题内容: Java控制器类: html文件: 角js: 这是我在服务器日志中无法理解的错误: 问题答案: 尝试以下方法。对我来说很好。 HTML你应该有 注意输入的名称。 然后在JS控制器方法中 现在在您的Java Controller类中 希望这对您有用。并且也要进行异常处理。
问题内容: 我有一个Java Spring MVC Web应用程序作为服务器。并且基于AngularJS的应用程序作为客户端。 在AngularJS中,我必须上传文件并发送到服务器。 这是我的 html 这是我的 UploadController.js 它要发送到服务器。这是我的 DocumentUploadController.java 运行此命令时,出现以下异常 在我的 application
问题内容: 我已经审查了有关此主题的问题和答案,但我认为它们不能完全回答我的问题: 使用有角度的前端(无论采用哪种方式)进行上传,都会将文件数据发送到服务器上的脚本(例如php脚本)(这是我的首选方法)。一旦运行了php脚本,我想返回到进行上传的页面并在其中提供消息。我不希望显示php页面。将不胜感激如何实现这一目标的一些指导。理想情况是将什么代码添加到php脚本中。 我想捕获与文件有关的信息并将