【问题标题】:ngFileUpload with railsngFileUpload 与 rails
【发布时间】:2016-03-25 09:00:22
【问题描述】:

我想在提交表单时上传文件。我在前端使用 ngFileUpload 并且服务器在轨道上。以下是我写的代码:

<form name="form" ng-submit="submit()">
  <input type="text" ng-model="data.username"/>
  <input type="text" ng-model="data.address">
   <input type="file" id="map" ngf-select ng-model="data.map" name="file"
               accept="image/*" ngf-max-size="2MB"
               ngf-model-invalid="errorFile">
</form>

在表单提交时,我可以看到包含所有值(包括地图/图像对象)的数据(在浏览器控制台上)对象。但是当我在服务器端检查时,地图显示为 {} 即空对象。

谁能帮我解决这个问题。

【问题讨论】:

  • 您能否向我们展示您处理文件上传的控制器代码。就我个人而言,我只会使用回形针或carrierwave来处理文件上传,因为这些是rails应用程序的关键
  • 在控制器端,我调用了一个 API,将数据对象作为我的 POST 数据传递。数据对象还包括地图对象。代码如下:var request = $http({ method: 'POST', url: '/myapi/post', data: data }) return req.then(function(resp){ return resp; })
  • 好的,所以您正在将文件保存到模型中是吗?你的 allowed_pa​​rams 呢,查看完整的控制器代码会有所帮助,只需使用此控制器代码更新问题
  • 是的..我正在将文件保存到“数据”模型中。所以我认为模型对象作为文件的空对象发送,因为我们必须上传它。我可以在发送/提交表单时上传吗?
  • 只用回形针,比你想做的简单得多

标签: ruby-on-rails angularjs ng-file-upload


【解决方案1】:

ngUpload 有时会很痛苦。这是我们使用 ngUpload 和 Rails 的解决方案。简短的回答,您需要确保使用Upload.upload 函数将附件发送到服务器。

html

<form name="form" ng-submit="submit(data)">
    ...
   <input type="file" id="map" ngf-select ng-model="data.map" name="file"
               accept="image/*" ngf-max-size="2MB"
               ngf-model-invalid="errorFile">
</form>

js

   $scope.submit = function(data) {
        Upload.upload({
            url: 'api/data.json',
            data: {
                data: data
            }
        }).then(function(res) {
           // handle success
        }, function(err) {
           // handle error
        });
    }

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 2017-01-11
    • 1970-01-01
    • 2017-02-28
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多