我使用以下内容通过Multer将文件上传到目录.它工作得很好,但我需要在上传后执行一些操作,这些操作需要我刚刚发布到"upload"目录的文件名.如何获取刚刚发布的文件的名称?
// Multer storage options
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'upload/');
},
filename: function(req, file, cb) {
cb(null, file.originalname + '-' + Date.now() + '.pdf');
}
});
var upload = multer({ storage: storage });
app.post('/multer', upload.single('file'), function(req, res) {
// Need full filename created here
});
Run Code Online (Sandbox Code Playgroud) 我可以将图像文件上传到SharePoint,但它不会被识别为图像.我已经尝试使用以下指令,该指令基于研究表明图像在上传到SharePoint时需要进行base64编码,但它仍然会上传一个看似已损坏的文件:https://github.com/adonespitogo/angular-base64-upload
我很高兴使用此指令,但不确定如何将我需要的内容传递到SharePoint的REST API中.
我原来的迭代不使用这个指令,但更多的是直接上传尝试.
我需要达到的目的如下:
1)成功上传图像而不会"损坏",这是否需要base64编码/我该如何实现?
2)按名称上传图像(不是"test.jpg")并有一些元数据(例如上传一个带有它所属的标题或部门名称的图像)
迭代1:无指令 这是我的HTML(请注意控制器通过ng-route绑定到页面):
<div class="col-md-12">
<form>
<input type="file" onchange="angular.element(this).scope().filesChanged(this)" data-ng-model="files" multiple>
<button data-ng-click="upload()">Submit</button>
<li data-ng-repeat="file in files">{{file.name}}</li>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
$scope.filesChanged = function (elm) {
$scope.files = elm.files
$scope.$apply();
}
$scope.upload = function () {
var fd = new FormData()
angular.forEach($scope.files,function(file){
fd.append('file',file)
})
$http.post("/sites/asite/_api/web/lists/getByTitle('Images')/RootFolder/Files/add(url='test.jpg',overwrite='true')", fd,
{
transformRequest: angular.identity,
headers: {
'Content-Type':undefined, 'X-RequestDigest': $("#__REQUESTDIGEST").val()}
}).success(function (d) {
console.log(d);
});
}
Run Code Online (Sandbox Code Playgroud)
更新:我认为这个问题与我的$ http帖子分离到了SharePoint.使用上面提到的指令,我可以输出base64,但不确定如何将其传递到我的帖子中进行上传.
迭代2:使用指令 这是我使用https://github.com/adonespitogo/angular-base64-upload指令的当前HTML :
<form>
<input type="file" data-ng-model="files" …Run Code Online (Sandbox Code Playgroud) 我一直在研究使用Bootstrap和Angular的选项,它似乎专注于两个:
Angular UI Bootstrap
AngularStrap
Run Code Online (Sandbox Code Playgroud)
我看到只使用本机Bootstrap的第三种选择.所有方法的利弊是什么?这似乎暗示Angular UI Bootstrap功能不完整:
我正在使用AngularJS创建一个文章页面,其中包含各个文章详细信息的链接.链接基于ID以确保它们是唯一的,但我希望URL是带破折号的标题(更多SEO /用户友好)而不是ID.以下是Angular示例,其中产品详细信息是干净的标题:
http://angular.github.io/angular-phonecat/step-11/app/#/phones
我目前的网址是按ID链接的,因此它们显示为文章/ 66D5069C-DC67-46FC-8A51-1F15A94216D4
我希望它们显示为文章标题,如文章/开始投资,并确保它们是SEO友好的.
我担心的是,如果不同作者的两篇文章具有相同的标题(例如,了解投资),如果我尝试按标题链接/查找与每篇文章唯一的ID,我将收到错误.
这是我的控制器:
var pfcControllers = angular.module('pfcControllers', []);
pfcControllers.controller('pfcCtrl', ['$scope', 'pfcArticles', function ($scope, pfcArticles) {
$scope.articles = pfcArticles.query();
}]);
pfcControllers.controller('pfcCtrl2', ['$scope', '$routeParams', 'pfcArticles', function ($scope, $routeParams, pfcArticles) {
$scope.article = pfcArticles.get({ articleID: $routeParams.articleID });
}]);
Run Code Online (Sandbox Code Playgroud)
这是我的路由器:
var pfcModule = angular.module('pfcModule', ['ngRoute', 'pfcServices', 'pfcControllers']); pfcModule.config(['$routeProvider', function ($routeProvider) { $routeProvider. when('/home', { templateUrl: './views/home.html'}). when('/categories', { templateUrl: './views/categories.html', controller: 'pfcCtrl' }). when('/article/:articleID', { templateUrl: './views/articles.html', controller: 'pfcCtrl2' }). otherwise({ redirectTo: '/home' }); }]);
Run Code Online (Sandbox Code Playgroud)
这是我的两个部分:
Categories.html(多篇文章)
<div class="row"> …Run Code Online (Sandbox Code Playgroud) 我需要一些关于将什么放入我的控制器的指导,以便我可以使用我的jQuery数据表进行服务器端处理.我正在使用MVC 5和Entity Framework.
以下示例:http://datatablesmvc.codeplex.com/documentation说明以下内容:
public class HomeController : Controller {
[HttpPost]
public ActionResult GetDataTables(DataTable dataTable) {
List<List<string>> table = new List<List<string>>();
//Do something with dataTable and fill table
return new DataTableResult(dataTable, table.Count, table.Count, table);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用这样的LINQ时我该怎么办?
public ActionResult Index()
{
var activity = db.Activity.Include(a => a.ActivityType);
return View(activity.ToList());
}
Run Code Online (Sandbox Code Playgroud) 我有一个PDF文件可以在除Firefox/Safari之外的所有浏览器上下载.它在浏览器窗口中打开它而不是下载文件.我的网站运行在node.js之上并托管在Azure中.用户下载的文件来自Azure blob存储,所以我怀疑这可能是一个CORS问题.
这是我下载的客户端代码:
<a href="{{fileURL}}" class="btn btn-default" download="myfile.pdf">Download File</a>
Run Code Online (Sandbox Code Playgroud)
这是服务器端代码:
$scope.fileURL = 'https://myblob.blob.core.windows.net/8282020/myfile.pdf';
Run Code Online (Sandbox Code Playgroud)
更新:我可以通过在Azure中根据以下帮助设置blob属性来添加内容处置,并且它将处置显示为"附件",但在FireFox/Safari中它仍然在浏览器中打开.这可能被阻止,因为Azure Blob存储可能被视为CORS?
更新2:将以下内容添加到我的HTML标记似乎在FireFox(但不是Safari)中有效,这是跨浏览器处理此问题的正确方法
type="application/octet-stream"
Run Code Online (Sandbox Code Playgroud)
更新3:通过节点设置内容处置和内容类型似乎正在工作.我不得不问,这是正确的方法吗?
blobSvc.setBlobProperties(containerName, filename, { contentDisposition: 'attachment', contentType: 'application/octet-stream' }, function (error, result, response) {
// result code here....
})
Run Code Online (Sandbox Code Playgroud) 是否可以隐藏我通过AJAX使用的REST URL来填充页面数据?我不希望其他人从我的REST API中获取和消费,但需要使用它来显示我站点中的内容.
如何从最终用户隐藏REST API URL?
我无法使用SQL Server Management Studio编辑或查看Azure数据库中的行.我错过了一些明显的东西吗 选项不存在.
我能够将我的桌面上的图像上传到基于Angular的Web应用程序,而不会出现问题,但是如果我从手机(如iPhone)上传,请使用"拍摄照片或视频"或"照片库"功能,当在横向拍摄时,它会导致图像在纵向拍摄时或横向拍摄.这是我目前的上传功能.任何线索/让其他人都有同样的问题从iPhone /移动电话上传到移动Web应用程序到SharePoint库?
这是我的上传功能:
// Upload of images
$scope.upload = function () {
//console.log($scope.files);
if (document.getElementById("file").files.length === 0) {
alert('No file was selected');
return;
}
var parts = document.getElementById("file").value.split("\\");
var uploadedfilename = parts[parts.length - 1];
var basefilename = uploadedfilename.split(".")[0];
var fileextension = uploadedfilename.split(".")[1];
var currentdate = new Date();
var formatteddate = $filter('date')(new Date(currentdate), 'MMddyy-hmmssa');
var filename = basefilename + formatteddate + '.' + fileextension;
var file = document.getElementById("file").files[0];
uploadFileSync("/sites/asite", "Images", filename, file);
}
//Upload file synchronously
function uploadFileSync(spWebUrl, library, filename, file) …Run Code Online (Sandbox Code Playgroud) 我有一个盒子(collada文件)加载在three.js画布中.我可以按预期与它互动.但是,框大小会因用户可以更改大小而异.
当我将它加载到500px乘500px画布时,如果框大,用户必须在看到它之前放大,如果它很小,它很小,用户需要放大.尺寸根据变量而变化通过.
如何在加载画布时将对象(collada文件)放入画布中,然后让用户缩放?下面是加载点击以在three.js画布中显示3D对象的代码:
$scope.generate3D = function () {
// 3D OBJECT - Variables
var texture0 = baseBlobURL + 'Texture_0.png';
var boxDAE = baseBlobURL + 'Box.dae';
var scene;
var camera;
var renderer;
var box;
var controls;
var newtexture;
// Update texture
newtexture = THREE.ImageUtils.loadTexture(texture0);
// Initial call to render scene, from this point, Orbit Controls render the scene per the event listener
THREE.DefaultLoadingManager.onProgress = function (item, loaded, total) {
// console.log( item, loaded, total ); // debug
if (loaded …Run Code Online (Sandbox Code Playgroud) angularjs ×5
javascript ×3
azure ×2
node.js ×2
sharepoint ×2
ajax ×1
angular-ui ×1
asp.net-mvc ×1
canvas ×1
cors ×1
datatables ×1
firefox ×1
image ×1
iphone ×1
linq ×1
multer ×1
rest ×1
seo ×1
sql-server ×1
ssms ×1
three.js ×1