新聞動態

                                                                                  位置:首頁 新聞動態 常見問題

                                                                                  襄陽網站制作公司分享:oss分片上傳

                                                                                  新聞動態
                                                                                  2020年10月20日 閱讀:2898次
                                                                                   //$accessKeyId,$accessKeySecret這兩個值都是可以在阿里云的賬號中獲取到的    //$endpoint是oss倉庫中的 Endpoint地域節點中的外網訪問的那個,也可以是傳輸加速域名的那個    //$bucket 是oss的倉庫名稱    //$object是指在上傳到阿里云oss后文件的路徑(其中包含了路徑+文件名稱)    //$filePath是指在前端上傳文件到后端后,有一個臨時存放的位置,一般的鍵名是tmp_name    
                                                                                   public function ossvideo(){
                                                                                      $name = input('name');
                                                                                      $file = request()->file('imgfile');
                                                                                      $arrList1 = $_FILES['imgfile']['name'];
                                                                                      $arrList2 = $_FILES['imgfile']['tmp_name'];
                                                                                      $object=$name.date('Y-m-d', time()) . '/'.$arrList1;
                                                                                  
                                                                                      $ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint, true);
                                                                                      try {
                                                                                          $uploadId = $ossClient->initiateMultipartUpload($this->bucket, $object);
                                                                                      } catch (OssException $e) {
                                                                                          return $e->getMessage();
                                                                                      }
                                                                                      /*
                                                                                       * step 2. Upload parts
                                                                                       */
                                                                                      $partSize = 10 * 1024 * 1024;
                                                                                      $uploadFile = $arrList2;
                                                                                      $uploadFileSize = filesize($uploadFile);
                                                                                      $pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize);
                                                                                      $responseUploadPart = array();
                                                                                      $uploadPosition = 0;
                                                                                      $isCheckMd5 = true;
                                                                                      foreach ($pieces as $i => $piece) {
                                                                                          $fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO];
                                                                                          $toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1;
                                                                                          $upOptions = array(
                                                                                              $ossClient::OSS_FILE_UPLOAD => $uploadFile,
                                                                                              $ossClient::OSS_PART_NUM => ($i + 1),
                                                                                              $ossClient::OSS_SEEK_TO => $fromPos,
                                                                                              $ossClient::OSS_LENGTH => $toPos - $fromPos + 1,
                                                                                              $ossClient::OSS_CHECK_MD5 => $isCheckMd5,
                                                                                          );
                                                                                          if ($isCheckMd5) {
                                                                                              $contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos);
                                                                                              $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5;
                                                                                          }
                                                                                          //2. Upload each part to OSS
                                                                                          try {
                                                                                              $responseUploadPart[] = $ossClient->uploadPart($this->bucket, $object, $uploadId, $upOptions);
                                                                                          } catch (OssException $e) {
                                                                                  
                                                                                              return $e->getMessage();
                                                                                  
                                                                                          }
                                                                                  
                                                                                      }
                                                                                      $uploadParts = array();
                                                                                      foreach ($responseUploadPart as $i => $eTag) {
                                                                                          $uploadParts[] = array(
                                                                                              'PartNumber' => ($i + 1),
                                                                                              'ETag' => $eTag,
                                                                                          );
                                                                                  
                                                                                      }
                                                                                      /**
                                                                                       * step 3. Complete the upload
                                                                                       */
                                                                                      try {
                                                                                          $info=$ossClient->completeMultipartUpload($this->bucket, $object, $uploadId, $uploadParts);
                                                                                  
                                                                                          $data=[
                                                                                              'name'=>$name.date('Y-m-d', time()) . '/'.$arrList1,
                                                                                              'size'=>$info['info']['speed_upload'],
                                                                                              'tiem'=>$info['date']
                                                                                          ];
                                                                                  
                                                                                          db('ossarchives')->insert($data);
                                                                                          return json(['code'=>1,"msg"=>'上傳完成']);
                                                                                      } catch (OssException $e) {
                                                                                          return $e->getMessage();
                                                                                      }
                                                                                  
                                                                                  }

                                                                                  上一篇

                                                                                  下一篇

                                                                                  關鍵詞: oss分片上傳
                                                                                  亚洲中文字幕在线19页_99久久国产精品免费热7788_欧美专区日韩专区综合专区_小泽玛利亚一区_gogo999亚洲肉体艺术