当前位置: 首页 > 知识库问答 >
问题:

使用gcs上载签名URL React JS的图像上载问题

裴嘉许
2023-03-14

我正在使用此代码上传文件

`const url=“https://storage.googleapis.com//file.png.png?x-goog-algorithm=goog4-rsa-sha256&x-goog-credential=gitlab-ci%.iam.gserviceaccount.com%2f20200521%2fauto%2fstorage%2fgoog4_request&x-goog-date=20200521t175304z&x-goog-expires=36000&x-goog-signedheaders=content-type%3bhost&x-goog-signature=”

const data = new FormData()
data.append('file', this.state.selectedFile)

var xhr = new XMLHttpRequest();

xhr.open('PUT', url, true);
xhr.setRequestHeader("Content-type", "application/octet-stream");


xhr.onload = function (response) {
  console.log('on-load', response);
};

xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {

    if (xhr.status === 200) {
      console.log("Status OK")

    } else {
      console.log("Status not 200")
    }
  }
};

xhr.onerror = function (response) {
  console.log("Response error", response)
};

xhr.upload.onprogress = function (evt) {
  // For uploads
  if (evt.lengthComputable) {
    var percentComplete = parseInt((evt.loaded / evt.total) * 100);
    console.log("progress", percentComplete)

  }
}
xhr.send(data);`

我也在Android上尝试了同样的事情,也面临着同样的问题。在Png的顶部添加了这些头字符串,不允许打开Png文件

使用此卷曲请求,Png上传工作正常。curl-x PUT-h'content-type:application/octet-stream'--upload-filen file.png'https://storage.googleapis.com//file.png?x-goog-algorithm=goog4-rsa-sha256&x-goog-credential=gitlab-ci%.iam.gserviceaccount.com%2f20200521%2fauto%2f storage%2fgoog4_request&x-goog-date=20200521t175304z&x-goog-expires=36000&x-goog-signedheaders=content-type%3bhost&x-goog-signature='

如果有人能帮助解决这个问题将会很有帮助。

共有1个答案

仉联
2023-03-14

实际上,您正在发送formdata,这会导致一个问题,您将看到文件被上传,但当您检索文件时,它的内容将不同,在图像的情况下,可能图像将不会被呈现。

cURL起作用的原因,是因为您直接发送文件而不是FormData。

要修复此场景,直接将文件传递给ajax,如下所述:

const file = this.state.selectedFile;

ajax.setRequestHeader('Content-Type', file.type);    
ajax.send(file); // direct file not FormData
 类似资料:
  • 我有一些文件是从Evernote API接收的(通过),并使用以下代码写入Google Cloud Storage: 即使对于某些类型的文档,它仍然有效。但GCS在日志中记录了某些文件: 和 这些错误似乎没有任何模式。它发生在文档、声音、图片等任何类型的文档中,其中一些文档类型有效,而另一些文档类型无效。这与大小无关(因为一些小文档和一些大文档都有效)。 有什么想法吗? 这是完整的堆栈跟踪,尽管我

  • 你好,请帮我在图像视图中需要上传当前图像 我需要上传电话中的图像捕获`公共类MainActivity extends Activity{Button Button;private static final int CAMERA_REQUEST=1888;private ImageView ImageView; //在main中找到按钮。xml按钮=(按钮)findViewById(R.id.upl

  • 我是NodeJS的新手,我正在使用express、ejs和Multer(处理多部分/表单数据)开发一个项目,以便上传一张图片(单个>>个人资料图片)。我一直试图在一个视图中显示上传的文件(图像),但没有成功。我有关于上传文件(req.file)的所有信息,但我不能用它做任何事情。 有人能帮帮我吗。 问候你,多娜

  • 我想从我的应用程序中的URL加载一个图像,所以我首先尝试使用Objective-C,它成功了,但是,使用Swift,我有一个编译错误: “imageWithData”不可用:使用对象构造“UIImage(数据:)” 我的职能: 在目标C中: 有人能给我解释一下为什么不能与Swift一起工作,以及我如何解决这个问题。

  • 我无法上载firebase存储上的配置文件图像。我正在把烤面包片上的错误打印出来。为什么会出现这种情况?我无法解决这个问题,我审查了我的代码很多次。问题可能是什么?我如何调整我的代码以使其正常工作?提前向大家表示感谢。