如何在没有文件对话框的情况下通过javascript / ajax从url发布图像

割草机

我正在尝试遵循一些API文档,其中提供了以下示例:

$("#submit").click(function () {
var data = new FormData();
var files = $('#fileUpload').get(0).files;
if (files.length > 0) {
    data.append("attachment[file]", files[0]);
    data.append("mediaExtension", "jpg");

}
$.ajax({
     type: "post",
     url: "http://[ur]/api/Interaction/InteractionCreateLocationResultAsMedia",
    data: data,
    mimeType: "multipart/form-data",
    cache: false,
    contentType: false,
    processData: false,
    success: function (data) {
        //do stuff
    },
    error: function (data, resultstatus, xhr) {
        alert("api call failed" + xhr);
    }
});

但是,我没有使用文件上传来创建图像。该图像实际上是从html5 canvas创建的。我可以成功地将canvas转换为base64数据,然后将其提交到我的服务器,这时它将返回一个URL,该URL指向图像在我服务器上的位置-因此,我想将该URL(或者也许是base64数据)传递给API使用上面的示例代码,但是当我使用下面的方法时,我感觉它不起作用,因为在从API返回给我的数据中,“ MediaData”键值为空。

有人知道将我的图片传递到此API的正确方法吗?

割草机

我想通了-答案是创建一个@Musa mentioend的blob。我使用以下方法:

var imgSrc = $('.image-container').find('img').attr('src');

var dataURLToBlob = function(dataURL) {
    var BASE64_MARKER = ';base64,';
    if (dataURL.indexOf(BASE64_MARKER) == -1) {
      var parts = dataURL.split(',');
      var contentType = parts[0].split(':')[1];
      var raw = decodeURIComponent(parts[1]);

      return new Blob([raw], {type: contentType});
    }

    var parts = dataURL.split(BASE64_MARKER);
    var contentType = parts[0].split(':')[1];
    var raw = window.atob(parts[1]);
    var rawLength = raw.length;

    var uInt8Array = new Uint8Array(rawLength);

    for (var i = 0; i < rawLength; ++i) {
      uInt8Array[i] = raw.charCodeAt(i);
    }

    return new Blob([uInt8Array], {type: contentType});
}

var apiData = new FormData();
apiData.append( "attachment[file]", blob);

$.ajax({
  url: submissionURL,
  type: "post",
  dataType: 'json', //return response as json
  mimeType: "multipart/form-data",
  cache: false,
  contentType: false,
  processData: false,
  data: apiData,
  error: function(data,resultstatus,xhr) {
    console.error("error:",data,resultstatus,xhr);
 },
  success: function(){
    //
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不打开对话框的情况下按位置加密特定图像?

来自分类Dev

如何在不触发“打印对话框”的情况下执行SSRS URL操作?

来自分类Dev

NullPointer尝试在没有对话框的情况下在Facebook上发布

来自分类Dev

FB UI;我无法在没有“对此发表评论”的情况下发布对话框

来自分类Dev

没有OpenCV的情况下如何通过ROS发布PIL图像二进制文件?

来自分类Dev

如何在没有窗口的情况下使用tkinter文件对话框

来自分类Dev

如何在没有JQuery的情况下将Ajax发布到Django表单

来自分类Dev

如何在没有JQuery的情况下将Ajax发布到Django表单

来自分类Dev

如何在没有onclick事件的情况下使用javascript更改图像?

来自分类Dev

如何在没有webserver-stuff(即AJAX)的情况下获取外部JavaScript的文本

来自分类Dev

如何在没有确认对话框的情况下将文件发送到垃圾箱

来自分类Dev

如何在没有AVISaveOptions对话框的情况下获取AVICOMPRESSOPTIONS?

来自分类Dev

如何在没有对话框的情况下固定应用程序

来自分类Dev

如何在没有对话框的情况下打印XPS?

来自分类Dev

AEM6-如何在没有对话框的情况下编辑组件?

来自分类Dev

如何在没有AVISaveOptions对话框的情况下获取AVICOMPRESSOPTIONS?

来自分类Dev

如何在没有flex或transform的情况下居中对话框

来自分类Dev

如何在没有“文本输入”对话框的情况下运行LibreOffice Calc?

来自分类Dev

在没有api的情况下通过http请求发布

来自分类Dev

如何在代码中没有“直接描述”的情况下从mipmap文件夹动态更改图像?

来自分类Dev

如何在代码中没有“直接描述”的情况下从mipmap文件夹动态更改图像?

来自分类Dev

MockMVC - 如何在没有 mockMvc 进行实际发布的情况下测试发布到端点?

来自分类Dev

如何在没有JavaScript和Ajax的情况下从MVC4 C#获取json

来自分类Dev

通过LinkedIn API发布没有相关URL的图像

来自分类Dev

如何在没有主机名的情况下从JavaScript中的其他端口将URL写入资源

来自分类Dev

如何使用Twitter API从URL发布图像?

来自分类Dev

TutuApp 是如何在没有 Apple 应用商店的情况下公开发布的?

来自分类Dev

如何在图像容器之间没有任何空间的情况下间隔图像

来自分类Dev

如何在不通过谷歌登录对话框(javascript)登录的情况下访问谷歌分析api?

Related 相关文章

  1. 1

    如何在不打开对话框的情况下按位置加密特定图像?

  2. 2

    如何在不触发“打印对话框”的情况下执行SSRS URL操作?

  3. 3

    NullPointer尝试在没有对话框的情况下在Facebook上发布

  4. 4

    FB UI;我无法在没有“对此发表评论”的情况下发布对话框

  5. 5

    没有OpenCV的情况下如何通过ROS发布PIL图像二进制文件?

  6. 6

    如何在没有窗口的情况下使用tkinter文件对话框

  7. 7

    如何在没有JQuery的情况下将Ajax发布到Django表单

  8. 8

    如何在没有JQuery的情况下将Ajax发布到Django表单

  9. 9

    如何在没有onclick事件的情况下使用javascript更改图像?

  10. 10

    如何在没有webserver-stuff(即AJAX)的情况下获取外部JavaScript的文本

  11. 11

    如何在没有确认对话框的情况下将文件发送到垃圾箱

  12. 12

    如何在没有AVISaveOptions对话框的情况下获取AVICOMPRESSOPTIONS?

  13. 13

    如何在没有对话框的情况下固定应用程序

  14. 14

    如何在没有对话框的情况下打印XPS?

  15. 15

    AEM6-如何在没有对话框的情况下编辑组件?

  16. 16

    如何在没有AVISaveOptions对话框的情况下获取AVICOMPRESSOPTIONS?

  17. 17

    如何在没有flex或transform的情况下居中对话框

  18. 18

    如何在没有“文本输入”对话框的情况下运行LibreOffice Calc?

  19. 19

    在没有api的情况下通过http请求发布

  20. 20

    如何在代码中没有“直接描述”的情况下从mipmap文件夹动态更改图像?

  21. 21

    如何在代码中没有“直接描述”的情况下从mipmap文件夹动态更改图像?

  22. 22

    MockMVC - 如何在没有 mockMvc 进行实际发布的情况下测试发布到端点?

  23. 23

    如何在没有JavaScript和Ajax的情况下从MVC4 C#获取json

  24. 24

    通过LinkedIn API发布没有相关URL的图像

  25. 25

    如何在没有主机名的情况下从JavaScript中的其他端口将URL写入资源

  26. 26

    如何使用Twitter API从URL发布图像?

  27. 27

    TutuApp 是如何在没有 Apple 应用商店的情况下公开发布的?

  28. 28

    如何在图像容器之间没有任何空间的情况下间隔图像

  29. 29

    如何在不通过谷歌登录对话框(javascript)登录的情况下访问谷歌分析api?

热门标签

归档