从 url 获取图像文件对象

Posted

技术标签:

【中文标题】从 url 获取图像文件对象【英文标题】:get image file object from url 【发布时间】:2016-06-22 15:27:01 【问题描述】:

我正在制作一个 django-angularjs webapp。 有一个供用户上传文件的选项。 我想为用户提供一些示例图片以供上传。 因此,就像示例图像将由服务器发送到客户端,如果客户端选择它们作为新鲜上传,则再次发送回服务器。

angularjs 指令:

angular.module('users').directive('fileModel', ['$parse', function ($parse) 
return 
restrict: 'A',
link: function(scope, element, attrs) 
    var model = $parse(attrs.fileModel);
    var modelSetter = model.assign;

    element.bind('change', function()
        scope.$apply(function()
            modelSetter(scope, element[0].files[0]);
        );
    );

;
]);

我的html

<input type="file" file-model="myFile"/><br><br>
<button ng-click="uploadFile()">Upload</button>

angular-js 控制器:

$scope.uploadFile = function()

    var file = $scope.myFile;
    var uploadUrl = "/multer";
    var fd = new FormData();
    fd.append('file', file);

    $http.post(uploadUrl,fd, 
        transformRequest: angular.identity,
        headers: 'Content-Type': undefined
    )
    .success(function()
      console.log("success!!");
    )
    .error(function()
      console.log("error!!");
    );
;

使用上面的代码,用户可以从他们的电脑中选择图像并上传它们。

现在,如果我们有服务器发送的示例图像的 url。 如何编码角度控制器以从这些 url 获取文件对象的图像? 像 $scope.myFile=getImageFileObjectFromUrl(url) ??

感谢帮助

【问题讨论】:

【参考方案1】:

也有帮助

  $http.get(url.path, responseType: "blob").then((res) => 
   let fileUrl = (window.URL || window.webkitURL).createObjectURL(res.data);
   resolve(file: fileUrl, type: url.type, name: url.name);
  );

【讨论】:

【参考方案2】:

将图像从给定的 url 转换为文件对象:

$http.get(url,responseType: "blob").success((data) => 
  var file = new File([data], "sample.jpg");
  $scope.sampleFile=file;
);

【讨论】:

【参考方案3】:
$http.get("image_url", responseType: "arraybuffer").success((data) => 
    fd.append('file', data);
);

这是一个普遍的想法,当您获取图像 url 时,只需将请求作为 arraybuffer 到 URL,然后您只需将 blob 对象传递给您的 formdata。

【讨论】:

不工作...数据总是空数组缓冲区。虽然我在删除响应类型时可以看到 jpeg 数据。 你使用哪个版本的 Angular ? 您将不得不使用 XHR2 来使 arraybuffer 工作,所以也许只使用原始 XMLHttpRequest 2 而不是 angular 的 $http。 嗨,有什么想法可以将此图像显示到 HTML 端吗?

以上是关于从 url 获取图像文件对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NSArray 中获取图像 URL?

如何从 Python 中的 URL 读取图像数据?

如何从 URL 对象(图像)创建文件对象 [重复]

如何从 URL 对象(图像)创建文件对象 [重复]

如何从 URL 中获取图像文件的大小?

如何从 Django QuerySet 中获取绝对图像 URL 列表?