Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将表单数据发送到表单输入[类型=';文件';]?_Javascript_Google Chrome Extension_Upload - Fatal编程技术网

Javascript 如何将表单数据发送到表单输入[类型=';文件';]?

Javascript 如何将表单数据发送到表单输入[类型=';文件';]?,javascript,google-chrome-extension,upload,Javascript,Google Chrome Extension,Upload,我正在创建一个chrome扩展,它处理文件上传。我试图做的是下载一个图像,然后在下载后立即将其上传到并输入[type='file'] 以下是表单的html格式: <label> <form> <input accept="image/*,image/heif,image/heic" class="mkhogb32" multiple="" type="file"&g

我正在创建一个chrome扩展,它处理文件上传。我试图做的是下载一个图像,然后在下载后立即将其上传到并输入[type='file']

以下是表单的html格式:

<label>
  <form>
    <input accept="image/*,image/heif,image/heic" 
    class="mkhogb32" multiple="" type="file">
  </form>
</label>

这是我的代码,到目前为止:

          // load the image
      var img = new Image();
      img.setAttribute('crossOrigin', 'anonymous');
      img.src = result.products[pointer][3];

      // loaded
      img.onload = function() {
          // convert the image into a data url
          var dataUrl = getImageDataUrl(img);

          var blob = dataUrlToBlob(dataUrl);

          var form = document.getElementsByTagName('form')[1];

          // FormData will encapsulate the form, and understands blobs
          //Specifying which form to send it two
          var formData = new FormData(form);

          // "image_name.png" can be whatever you want; it's what the
          // host will see as the filename for this image (the host server
          // that receives the posted form).  it doesn't have to match the
          // original filename, and can be arbitrary or not provided at all.
          formData.append("image", blob);


          var request = new XMLHttpRequest();

         

          //POST to facebook page and it sends form data we created earlier
          request.open("POST", 'https://www.facebook.com/marketplace/create/item');
          request.send(formData);


      };


      // converts an image into a dataurl
      function getImageDataUrl(img) {
          // Create an empty canvas element
          var canvas = document.createElement("canvas");
          canvas.width = img.width;
          canvas.height = img.height;

          // Copy the image contents to the canvas
          var ctx = canvas.getContext("2d");
          ctx.drawImage(img, 0, 0);


          // NOTE:  this will throw a cross-origin security exception
          // if not done in an extension and if the image is cross-origin
          return canvas.toDataURL("image/png");
      }

      // converts a dataurl into a blob
      function dataUrlToBlob(dataUrl) {
          var binary = atob(dataUrl.split(',')[1]);
          var array = [];
          for(var i = 0; i < binary.length; i++) {
              array.push(binary.charCodeAt(i));
          }
          return new Blob([new Uint8Array(array)], {type: 'image/png'});
      }
//加载图像
var img=新图像();
setAttribute('crossOrigin','anonymous');
img.src=result.products[pointer][3];
//装载
img.onload=函数(){
//将图像转换为数据url
var dataUrl=getImageDataUrl(img);
var blob=dataUrlToBlob(dataUrl);
var form=document.getElementsByTagName('form')[1];
//FormData将封装表单,并理解blob
//指定要发送给它的表单
var formData=新formData(表格);
//“image_name.png”可以是您想要的任何内容;它是
//主机将作为此映像的文件名(主机服务器
//,它不必与
//原始文件名,可以是任意的,也可以根本不提供。
formData.append(“图像”,blob);
var request=new XMLHttpRequest();
//发布到facebook页面,它会发送我们之前创建的表单数据
请求打开(“POST”https://www.facebook.com/marketplace/create/item');
请求。发送(formData);
};
//将图像转换为dataurl
函数getImageDataUrl(img){
//创建一个空的画布元素
var canvas=document.createElement(“canvas”);
canvas.width=img.width;
canvas.height=img.height;
//将图像内容复制到画布
var ctx=canvas.getContext(“2d”);
ctx.drawImage(img,0,0);
//注意:这将引发跨源安全异常
//如果未在扩展中执行,并且图像是交叉原点
返回canvas.toDataURL(“image/png”);
}
//将数据URL转换为blob
函数dataUrlToBlob(dataUrl){
var binary=atob(dataUrl.split(',)[1]);
var数组=[];
对于(var i=0;i

但是,当图像被发送到服务器时,实际上没有图像被上传到输入。有人知道我哪里出错了吗?

请仅以文本形式发布实际代码,而不是以图像形式发布。