带环回的文件上传

2023-12-09

我使用 Loopbackjs 创建了一个简单的文件上传应用程序。 在应用程序的客户端中,我使用了简单的 HTML 和 Javascript 代码,通过 AJAX 调用来调用环回 api:

$('#upload-input').on('change', function () {

    var files = $(this).get(0).files;

    if (files.length > 0) {
        // One or more files selected, process the file upload
        var form = new FormData();

        for (var index = 0; index < files.length; index++) {

            var file = files[index];
            form.append('Uploded Files', file, file.name);
        }

        $.ajax({
            url: 'api/fileupload/upload',
            type: 'POST',
            data: form,
            processData: false,
            contentType: false,
            success: function (data) {
                console.log('upload successful!');
            }
        });
    }

});

我们没有在服务器端获取文件。在服务器端我们创建了一个Loopback API,但是我们如何使用这个API上传文件呢?

这是我的环回 API 代码:

FileUpload.remoteMethod

(
        'upload', {
            http: {
                verb: 'post',
            },
            accepts:
            [
                { arg: 'ctx', type: 'object', http: { source: 'context' } },
                { arg: 'options', type: 'object', http: { source: 'query' } }

            ],
            returns: {
                arg: 'data',
                type: 'string',
                root: true
            }
        }
    );

    FileUpload.upload = function (context, options, callback) {
        //context.req.params = 'common';

    };

安装万用表:https://github.com/expressjs/multer

npm install --save multer

在 MyModel.js 中

var multer = require('multer');
var fs = require('fs');

module.exports = function (MyModel) {
    var uploadedFileName = '';
    var storage = multer.diskStorage({
        destination: function (req, file, cb) {
            // checking and creating uploads folder where files will be uploaded
            var dirPath = 'client/uploads/'
            if (!fs.existsSync(dirPath)) {
                var dir = fs.mkdirSync(dirPath);
            }
            cb(null, dirPath + '/');
        },
        filename: function (req, file, cb) {
            // file will be accessible in `file` variable
            var ext = file.originalname.substring(file.originalname.lastIndexOf("."));
            var fileName = Date.now() + ext;
            uploadedFileName = fileName;
            cb(null, fileName);
        }
    });


    MyModel.upload = function (req, res, cb) {
        var upload = multer({
            storage: storage
        }).array('file', 12);
        upload(req, res, function (err) {
            if (err) {
                // An error occurred when uploading
                res.json(err);
            } else {
                res.json(uploadedFileName);
            }
        });        
    };

    MyModel.remoteMethod('upload',   {
        accepts: [{
            arg: 'req',
            type: 'object',
            http: {
                source: 'req'
            }
        }, {
            arg: 'res',
            type: 'object',
            http: {
                source: 'res'
            }
        }],
        returns: {
             arg: 'result',
             type: 'string'
        }
    });
};

前端 - 我使用 AngularJS,因此遵循 -https://github.com/nervgh/angular-file-upload

还有其他这样的指令可以使用

附: - 根据你的评论 -Actually Our Problem is that , we need to upload a File from Client Side and Store this File in Database , But Before save in DB , we need to get files on Server side , if we get Files on Server side via Post API than we can easily store file in DB

无法为您提供确切的解决方案,但使用上述方法文件将上传到您的/client/uploads文件夹,一旦上传,您就可以控制如何处理文件,一旦一切完成,最终删除它(可选)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带环回的文件上传 的相关文章

  • Rails 3:如何让用户在表单中至少选择一个复选框?

    我有一个表单 用户在提交表单之前必须选中至少一个复选框 有没有任何插件可以处理这个问题或者jquery可以应用于我的表单 不幸的是我完全是一个 jquery 菜鸟 上面的所有答案都显示了如何在客户端执行此操作 这确实可能更好 正如您的问题标
  • 沙箱中的 Nodejs

    我使用 NodeJS 作为客户端浏览器和服务器之间的中间人来处理所有请求 我正在尝试使用 nodejs 作为过滤工具并突出显示 如果不是 所有恶意脚本 但我意识到nodejs让脚本以当前环境权限运行 因此 我决定通过安装沙箱在新的上下文中运
  • HTML 下拉菜单禁用 Javascript 中的选项

    Question 下面的代码是隐藏所选项目下拉列表中的选项 因此 当用户选择该选项时 它将隐藏所有下拉选择列表中的所选值 我现在有四个下拉选择 我想实现像当下拉选择被触发时它将启用当前选择的选项值 意味着用户能够在用户触发时选择回下拉选择中
  • 从旧的外部 Javascript 更改 React 组件的状态?

    如何从旧的 jQuery soup 中更改 React 组件的状态 代码 我有一个这样的组件 var AComponent React createClass getInitialState function return ids rend
  • Bootstrap Affix Nav 导致下面的 Div 向上跳转

    我使用 Bootstrap 的 Affix 函数创建了一个 JSFiddle 以便在向下滚动并且标题移出视图时使导航保持在屏幕顶部 我遇到的问题是 当使用纯 HTML 时 导航下方的文本会过早地跳起来并隐藏在导航后面 查看有问题的代码her
  • Setinterval随着指数时间减少

    我有一个带有 setinterval 的 mousedown 事件 我希望间隔时间是可变的 所以第一个是 500 第二个是 500 2 250 等等 有什么建议吗 plus mousedown function e increment 20
  • 我希望 jQuery 验证器向表单元素的父级添加一个类

    我该如何使用jQuery 验证器 http docs jquery com Plugins Validation添加 删除类名 例如validate 在表单元素的父元素上 li 这样我就可以通过仅设置一个类名来设置与该元素相关的所有内容的样
  • Jquery UI 可调整大小的问题超出了遏制范围(也使用了可拖动)

    我面临的问题是 div 的可调整大小 当我将它与 Draggable 一起使用时 它会出现问题并且无法调整其宽度方向的大小 如果我单独使用可调整大小 那就没问题了 但我需要让它与可拖动功能一起使用 请建议 单击演示的 jsFiddle 链接
  • 如何在Windows服务器上将node.js文件作为后台进程运行?

    我正在创建一个 node js 项目并将其上传到我的 Windows 服务器 以为移动应用程序提供 API 服务 当我打开命令提示符并键入 node app js 它运行正常 但是当我关闭命令提示符时 我的 Node js 服务器停止运行
  • 如何按多个项目搜索/过滤列表?

    我正在寻找一个示例 或者可能是一个关于通过在文本框中输入的多个项目来过滤 搜索项目列表的方法的一点提示 假设我有一个列表 ul li Coffee li li Tea li li Milk li li Water li li Juice l
  • Firebase 模拟器启动时失败找不到模块 --dns-result-order=ipv4first

    Firebase 模拟器11 0 0无法启动 firebase emulators start 当它到达模拟器 UI 时抛出异常 i ui 模拟器 UI 日志记录到 ui debug log ui 发生致命错误 模拟器 UI 已退出 代码为
  • NestJS e2e 测试模拟会话装饰器

    我正在尝试使用 supertest 编写一个 e2e 测试 其中我的控制器实际上使用了 Session 装饰师 然而 我不想承担使用数据库连接等启动会话的全部负担 因此测试中的我的应用程序实际上并未初始化会话 相反 我想首先模拟掉装饰器提供
  • 在多个动态添加的表单上初始化 jQuery validate() 函数

    有人建议最好初始化一个 form validate 在页面加载而不是点击事件上运行 jquery form validate 插件仅允许在输入更改时提交 https stackoverflow com questions 10984196
  • firebase 和 firebase-admin npm 模块有什么区别?

    我想使用 Firebase 身份验证 数据库和存储 构建 Node js Web 应用程序 但我对应该使用哪个模块感到困惑 firebase or firebase 管理员 或两者 管理 SDK 运行您的代码管理权限 https fireb
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • 将 onclick 事件应用于页面加载时不存在的元素

    我将列表样式设置为看起来像选择框 并且当用户单击列表中的元素时我想触发一个函数 但是该元素是通过加载的AJAX因此 当页面加载并且我无法绑定时不存在onclick事件到它onDomReady 如果我把它作为一个普通的选择列表 我可以只标记一
  • jQuery 悬停时滚动到 div 并返回到第一个元素

    我基本上有一个具有设定尺寸的 div 和overflow hidden 该 div 包含 7 个子 div 但一次只显示一个 我希望当它们各自的链接悬停时能够平滑地垂直滚动 但是 第一部分 div 没有链接 并且是没有悬停链接时的默认部分
  • 如何取消 AjaxForm 上的提交

    我正在使用 jQuery 插件 ajax 形式 我尝试实现这样的东西 MyFormID ajaxForm dataType json resetForm true beforeSubmit function validateData ret
  • 下载中带有文件名的 NodeJS sendFile

    我尝试使用以下代码将文件发送给客户端 router get get myfile function req res next res sendFile other file name dat 它工作正常 但当用户从以下网址下载此文件时我需要
  • 使用 AJAX 和 JQuery 按设定的时间间隔刷新 Rails 部分

    I have a page in my rails application that looks like 现在 我有另一个用 python 编码的人工智能应用程序 它处理视频 显示在 Rails 应用程序页面的左侧 并使用捕获的车辆及其相

随机推荐

  • URL 重写 - 查询字符串

    我有一个新闻 博客 网站 当选择单个帖子时 它会返回以下格式的网址 website net sitenews php q posts view postname 12 我正在寻求重写 url 使其显示为 website net sitene
  • 表单上的令牌方法、双重提交问题

    我花了几周的时间来研究我的表单的双重提交保护 直接说 存储令牌的会话方法不起作用 会话对于刷新页面或某人回顾其历史记录来说工作得很好 但是使用会话无法阻止通过多次单击按钮来进行经典的双重提交 我认为当在几毫秒内处理多次点击时 脚本无法足够快
  • Keras - 用于文本分析的自动编码器

    因此 我正在尝试创建一个自动编码器 它将接受文本评论并找到较低维度的表示 我正在使用 keras 我希望我的损失函数能够将 AE 的输出与嵌入层的输出进行比较 不幸的是 它给了我以下错误 我很确定问题出在我的损失函数上 但我似乎无法解决这个
  • 获取/设置开放图谱帖子的受众

    是否可以获取或设置开放图谱故事帖子的受众 朋友 只有我 公众 根据开发者脸书应该有一个隐私设置字段 我的应用程序确实具有发布权限 publish actions 和读取权限 public profile email user posts 当
  • Matlab 特殊矩阵

    有没有一个MATLAB函数可以生成这个矩阵 1 2 3 4 5 6 7 n 2 3 4 5 6 7 8 n 1 3 4 5 6 7 8 9 n 2 n n 1 n 2 2 n 1 它有名字吗 Thanks 是的 该矩阵确实有一个名称 它被称
  • Angular:加载所有指令后在控制器中运行函数

    我正在尝试编写一些代码 这些代码允许我在控制器中运行一个函数 但只有在整个 dom 设置并准备就绪后 包括指令链接函数运行等 我目前正在通过 rootScope 广播在 ctrl service 和指令之间进行通信 指令未拾取控制器加载时的
  • 如何为 Google Drive 上存储的文件设置图像缩略图

    使用 Google Drive API 我可以使用以下命令更新任何可写文件的属性files update method import datetime data modifiedTime datetime datetime utcnow i
  • 如何使用React + ES6 + webpack导入导出组件?

    我正在玩React and ES6 using babel and webpack 我想在不同的文件中构建多个组件 导入到单个文件中并将它们捆绑在一起webpack 假设我有一些这样的组件 我的导航栏 jsx import React fr
  • 获取 django 预订中的客人数量

    如果每个用户参加一个活动 他们都可以进行预订 但每个活动只有一定数量的开放空间 我想在活动中显示 10 个席位中还剩下 5 个 我似乎无法找到已预订且状态为 活跃 或 待定 的客人总数 这是我的事件模型 class Events model
  • 安装rubberduck后看不到插件?

    我是 ruby duck 的新手 已经安装了最新版本 2 0 11 安装管理员后 我转到 excel 并检查我的 com addins 它现在确实显示了rubberduck 我检查了我的程序数据文件夹 是的 rubberduck 包含所有文
  • 使用findText在谷歌应用程序脚本(documentApp)中使用正则表达式分割文本

    在谷歌文档 不是电子表格 中 我有一堵文字墙 看起来像 foo bar header foo bar bat paragraph and another paragraph and yet an other paragraph and so
  • Android:删除项目(ListView)

    我想从中删除一个项目ListView 但我不知道该怎么做 这是我的代码 public void FLYNOTE refresh int i SharedPreferences Pref getSharedPreferences nnote
  • FileProvider.getUriForFile 返回 null

    我正在尝试在设备的相机中拍照 当我调用处理图像捕获的方法时 应用程序由于空指针异常而崩溃 我不知道我的 FileProvider 缺少哪些信息 因为堆栈跟踪将空指针指向我的 FileProvider getUriForFile 语句 这是我
  • 有没有更好的方法来更改 php 中的 DOMElement->tagName 属性?

    我刚刚遇到了为我的 MVC 框架构建 Textbox 控件的情况 在完成整个文档之前 我对继承自 ServerTag 又继承自 DOMElement 的所有内容调用 PreRender 我发现更改 DOMElement 派生对象的 tagN
  • 同步以确保另一个线程可以看到对不可变对象的引用

    我刚刚在学习this了解新 JMM 中最终字段的行为 5 及以上 这个概念很明确 在正确构造对象后 保证初始化的最终字段对所有线程的可见性 但在本节的最后 我读到了这一点 这让我很困惑 现在 说了所有这些 如果在一个线程构造一个不可变对象
  • Google Chrome 中未定义 Map()

    我一直在寻找答案 但只得到有关 Google 地图 API 的结果 我正在尝试使用 JavaScript 中的映射将整数映射到字符串 在 Firefox 中一切正常 但在 chrome 中我在控制台中收到一条错误消息 未捕获的引用错误 地图
  • 为什么这个 PHP 相关包含失败?

    disc puff php ls a php data include disc puff php tree a php data d php include b php c php 2 directories 4 files disc p
  • C#/C++ 之间的编组复杂结构

    我正在尝试从 C 填充结构数组并将结果传递回 C 我想也许创建一个具有结构数组的结构可能是前进的方向 因为我遇到的大多数示例都使用结构 但传递基本类型 我已经尝试过以下方法 但到目前为止还没有运气 在以下位置找到了一个示例 http lim
  • YASM:vmovaps 指令导致分段错误

    Problem movaps给我一个分段错误 Context x86 64指令vmovaps设计用于与 Core i 系列处理器 我正在运行该系统 上的 AVX 寄存器一起使用 AVX 寄存器的宽度是 SSE 寄存器的两倍 分别为 256
  • 带环回的文件上传

    我使用 Loopbackjs 创建了一个简单的文件上传应用程序 在应用程序的客户端中 我使用了简单的 HTML 和 Javascript 代码 通过 AJAX 调用来调用环回 api upload input on change funct