javascript - 上传后文件内容错误

标签 javascript jquery google-cloud-platform google-cloud-storage

考虑这种形式:

<form class="well">
   <fieldset>
      <div class="form-group">
         <label for="exampleInputFile">File input</label><input id="exampleInputFile" type="file" aria-describedby="fileHelp" class="form-control-file">
      </div>
      <div class="form-group"><button type="submit" onclick="submitForm();" class="btn btn-info btn-sm pull-right">Submit</button></div>
   </fieldset>
</form>

还有这个 JavaScript:

<script>
function submitForm() 
{
    console.log("Fetching the file...");
    var input = document.getElementById('input[type="file"]');
    var data = new FormData();
    data.append('file', input.files[0]);
    console.log(file.size);
    fetch('https://www.googleapis.com/upload/storage/v1/b/' + #{bucket} + '/o?uploadType=media&name=sample.txt', {
      method: 'POST',
      body: data
    }).then(function(res){ console.log(res.json()); });
}
</script>

它上传一个调用 Google Cloud Storage API 的文件:https://cloud.google.com/storage/docs/json_api/v1/objects/insert

但是,收到的文件如下所示:

内容:

------WebKitFormBoundaryZBAeI3W6nEzJeW7r--

类型:多部分/表单数据;边界=----WebKitFormBoundaryZBAeI3W6nEzJeW7r

我到底做错了什么?

另外,是否可以设置上传后立即刷新页面?

最佳答案

您将文件作为表单数据上传,它应该只是一个普通文件

fetch('https://www.googleapis.com/upload/storage/v1/b/' + #{bucket} + '/o?uploadType=media&name=sample.txt', {
  method: 'POST',
  body: input.files[0]
}).then(function(res){ console.log(res.json()); });

此外,您可能希望通过将按钮从提交按钮更改为普通按钮来阻止按下按钮时提交表单。 类型=“按钮”

关于javascript - 上传后文件内容错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49037326/

相关文章:

javascript - d3js 围绕饼图重新分配标签

javascript - 如果用户单击另一个按钮,则还原 CSS

javascript - 单击 div 元素以外的任何位置时删除该 div 元素

php - 产品的多个复选框选择(过滤器)

javascript - 打字时暂停音频,停止时播放

javascript - jQuery 可排序(拖放)仪表板容器

javascript - 从 Flux 组件函数中,如何访问输入的值?

node.js - 无法从 GCP 调度程序调用 Google Cloud Function

google-cloud-platform - 如何立即删除 GCP 项目?

python列表到字典的数据流