所以我试图用MEAN堆栈开发完整的应用程序(mongodb,express,angular,node.js)。
据我所知,使用express和node i可以使用端点创建一个rest api来获取我的应用程序的数据。我也明白,角度仅适用于FRONT END。所以我的问题是这个...当你有一个类似上传表格的东西并且你想将图像上传到服务器时,你想要创建一个名为" / api / upload /&#34的api端点吗? ;并拥有在该端点上传图像的所有逻辑,或者您是否希望在其他地方上传所有上传逻辑,然后只需将文件名提供给" / api / upload /"有帖子请求的端点?
答案 0 :(得分:1)
我不是100%肯定上传逻辑的意思 - 没有太多需要,但我会将所有内容(包括文件本身)放在POST
到/api/upload/
中,然后但是你希望在那个功能中保存它。
答案 1 :(得分:1)
将业务逻辑放在服务器端始终是一种更好的方法,我建议您遵循这种方法。如果您遵循此方法,则可以根据需要轻松操作图像。例如,当我们需要裁剪时,在上传徽标或头像的同时,对相同图像的图像重新调整大小等操作用于缩略图和个人资料图片。这种方法对我们来说非常有意义。我们可以响应用户并创建新的图像处理流程,而无需等待或通知最终用户。大多数应用程序遵循此方法以获得更好的体验
答案 2 :(得分:1)
您可以应用关注点分离,首先您可以将文件上传委托给客户更多用户友好",裁剪它,调整大小然后发布生成的文件为"文件"或者base64到服务器,用于将其存储在数据库或文件系统中。
我建议客户端使用这两个库的组合:
然后您可以发布图像并使用身体解析器来捕捉"快递中的图片我建议您使用busboy,它可能是您提到的端点的一部分,例如 api / file / upload
// your controller
exports.uploadDocument = function(req,res, next){
req.pipe(req.busboy);
req.busboy.on('file',function(fieldname, file, filename, encoding, contentType){
// implementation
});
//updating req.body with busboy parameters
req.busboy.on('field',function(fieldname,val){
req.body[fieldname] = val;
});
req.busboy.on('finish', function() {
// implementation
next();
});
};
我希望有所帮助。
答案 3 :(得分:0)
简短回答:快递应该上传,但不是必须的。
答案很长:这是一个设计问题。如果是图像,您可以将图像发布到imgur api并将返回的URL发送到您的服务器,但是 比服务器端更不可靠。人们可能正在通过手机,平板电脑等使用您的网站,虽然图片上传速度相当快且一致,但服务器始终会以最快的速度完成,因为它并不依赖于客户端的无线连接强度。 Angular和Express同样擅长验证图像文件。
最重要的是,如果出现问题,您想要记录尝试(可能是图片),大部分都无法在客户端执行此操作。
答案 4 :(得分:0)
我强烈建议你将你的逻辑移到后端并用express表达,