【问题标题】:Upload image to server angularjs将图像上传到服务器 angularjs
【发布时间】:2016-08-15 23:06:21
【问题描述】:

我需要将从我的移动设备拍摄的图像上传到我的服务器。我找到了引用的 angular-upload 库。我需要做的是将图像库转换为 64,通过邮寄方式将其发送到我的服务器,因为服务器是我将与她一起工作的地方。另一个,从我的服务器发送并从应用程序运行它。

var server = URL_BASE+'addView/';

var trustAllHosts = true;

var ftOptions = new FileUploadOptions();
ftOptions.fileKey = 'file';
ftOptions.fileName = $scope.imagen.substr($scope.imagen.lastIndexOf('/') + 1);
ftOptions.mimeType = 'image/jpeg';
ftOptions.httpMethod = 'POST';

console.log(ftOptions);

$cordovaFileTransfer.upload(encodeURI(server), $scope.imagen, ftOptions, trustAllHosts)
.then(function(result) {
  console.log(result)
}, function(err) {
  // Error
  console.log(err);
}, function (progress) {

});

【问题讨论】:

  • 您既没有提供问题陈述也没有提供问题....那么问题是什么?问题是什么?
  • 不仅仅是问题,我需要一些建议,最好的方法。在遵循本教程的那一刻,我的服务器在其他安全蛋糕上运行时遇到问题。我正在尝试将图片作为 $ _FILE 发送,但我喜欢做的是设备上的托管图像将该字符串传递给 base64 并将其发送到服务器。即使我无法将图像转换为 base64。

标签: angularjs ionic-framework


【解决方案1】:

离子文件传输

我个人使用Cordova file transfer 从服务器上传和下载内容。

Base64 编码

不知道您的图像存储在哪里以及如何检索它,但是,您要么指定图像是 base64 编码到 HTML 文件分隔符中 或者 您使用画布转换图像 有关更多信息,请参阅该帖子:https://stackoverflow.com/a/20285053/3687474

【讨论】:

  • 尝试 FileTransfer 但总是得到相同的错误 Error: undefined is not a constructor (evalating 'new FileTransfer')
  • 显示您的代码,对此无能为力。另外,你有没有“cordova plugin add org.apache.file”和“cordova plugin add org.apache.file-transfer”?
  • 我会让我的代码,我让它工作,我意识到我正在安装插件我通过添加 400 ng-cordova Search 并运行良好并不是一个错误。现在我的服务器有问题了哈哈
  • @aorfevre 我使用了科尔多瓦文件传输stackoverflow.com/questions/36981211/…,但我只调用错误回调
【解决方案2】:

你还没有指定你真正需要的东西,所以: 在这里你有一个工厂

//Factory you register on your module
angular
    .module('myApp')
    .factory('sendBase64Image', sendBase64Image)

function sendBase64Image($http) {
    var urlBase; //url to be filled in

    var base64 = {};
    base64.sendBase = function (baseImg) {
        var request = $http({
            method: "post",
            url: urlBase,
            headers: {
                'Content-type': 'application/json'
            },
            data : baseImg 
        });
    }
    return base64;
}

然后您应该通过依赖注入将其注入您的控制器并执行对服务器的调用。 如果你想对响应做一些事情,请使用 success() 方法来处理 promise 响应。

【讨论】:

  • 我必须为工作中的应用程序执行此操作。我们只是 http 发布了 base64 字符串,因为我们的节点服务器在 IIS 上运行,因此文件上传存在问题。我们使用 LZString.js 压缩库来减小大小,但是如果您遇到文件上传问题,您可以简单地使用 json 对象进行 http post。 justMe 是完全正确的
猜你喜欢
  • 2022-09-26
  • 1970-01-01
  • 2017-06-22
  • 2013-12-17
  • 2014-03-21
  • 2017-05-31
  • 2013-11-02
  • 2014-03-24
  • 1970-01-01
相关资源
最近更新 更多