首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从客户端上传到backblaze

从客户端上传到backblaze
EN

Stack Overflow用户
提问于 2016-06-01 04:02:03
回答 2查看 2.3K关注 0票数 5

有没有办法从客户端直接上传到backblaze?现在图片从客户端上传到php,然后再上传到backblaze,所以一个文件被上传了两次。我能把文件从Javascript发送到backblaze吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-03 07:03:08

我认为直接上传是可能的,因为CORS现在可用于b2。直接用ajax上传文件。

步骤1.使用帐号id和应用密钥获取authorizationToken令牌

步骤2.使用上面的authorizationToken获取上传url。

步骤3.将此url发送到客户端浏览器,并将文件直接上传到b2。

问题:如果您需要sha1进行验证,则为,这仅适用于支持HTML5的浏览器。点击此处阅读更多信息

Is it possible to compute a file's SHA1 ID using Javascript?

https://developer.mozilla.org/en-US/docs/Web/API/File

https://www.backblaze.com/b2/docs/b2_upload_file.html

票数 7
EN

Stack Overflow用户

发布于 2021-04-16 20:14:57

对于任何仍在寻找解决方案的人,您现在可以使用S3预签名URL。以下是步骤

1-从您的前端/JS向服务器(在本例中为PHP)发送GET/POST请求,请求预签名的URL

代码语言:javascript
复制
$b2 = new Aws\S3\S3Client([
        'version' => 'latest',
        'endpoint' => 'https://xxx.backblazeb2.com',
        'region' => 'eu-xxx-xxx',
        'credentials' => array(
            'key'    => $_ENV['B2_KEY'],
            'secret' => $_ENV['B2_SECRKET'],
        )
    ]);

$cmd = $b2->getCommand('PutObject', [
            'Bucket' => $bucketName,
            'Key' => $subFolder . "" . $fileName,
            'ContentType' => $fileType,
        ]);
    
    
        $request = $b2->createPresignedRequest($cmd, '+20 minutes');
    
        // Get the actual presigned-url
        $presignedUrl = (string)$request->getUri();
    
        echo $presignedUrl;

2-在你的前面获取你的回复,然后使用预先签名的URL代码上传你的文件(例如Axios)

代码语言:javascript
复制
axios
     .put(b2PreSignedUrl, myFile)
     .then(response => {
     console.log(" -> B2 upload status " + JSON.stringify(response))

      }).catch(e => {
        console.log(" -> Error uploading video to B2 " + e)
       })

但最重要的是(否则会出现CORS错误或超时错误),您需要通过命令行工具为存储桶创建自定义CORS。下面是我的CORS设置和CLI命令

代码语言:javascript
复制
b2 update-bucket --corsRules '[    
          {
              "corsRuleName": "downloadFromAnyOriginWithUpload",
              "allowedOrigins": [
                  "*"
              ],
              "allowedOperations": [
                  "s3_delete",
                  "s3_get",
                  "s3_head",
                  "s3_post",
                  "s3_put"
              ],
              "maxAgeSeconds": 3600
          }
      ]' <BUCKETNAME> allPublic
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37554667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档