将base64转换为要在<form> <input name =“file”/>

时间:2016-04-13 12:55:17

标签: javascript base64 blob

我正在将base64解码为二进制

var image ="data:image/png;base64,iVBOR..."
var decoded = atob(image.split(",")[1])

然后想通过表格上传:

<form action="https://storage.googleapis.com/YOUR_BUCKET_NAME" 
      method="post" enctype="multipart/form-data">
  <input name="key" type="text" value="objectName.txt" /><br/>
  <input type="hidden" name="file" />
  <input type="submit" value="Upload!" />
</form>

我将input的值name="file"设置为decoded字符串,但会产生invalid image

我尝试将其转换为blob,但当我将其设置为[Object blob]

时产生的值时

我在这里缺少什么?

当我使用:http://decodebase64.com/并输入base64字符串时,它会输出相同的数据,但copy/pasting输入到文件中,显然不起作用。

我肯定错过了解码数据并将其变成工作文件之间的必要步骤......

  • 我是否必须对字符串进行编码以及如何编码?
  • 如何找出应该编码的内容?

(我正在首先浏览文件,与表单分开。然后我用一些库来裁剪它,它会发出一个有效的base64字符串。现在我需要form才能工作和我一起把这个解码后的数据放进去。但就像我提到的那样,手动复制/粘贴也行不通,所以有一个步骤缺失......)

1 个答案:

答案 0 :(得分:0)

我尝试了同样的方法,结果发现您无法手动将文件设置为以表格形式上载。似乎是浏览器的安全性。 我的解决方法是包括第二个类型为'text'的隐藏输入字段,然后将Base64文本插入其中。 然后,服务器端检查是否设置了任何一个。 注意:现在,我继续搜索如何从输入的“文件”中获取Base64;)