php
  • amazon-s3
  • 2012-01-10 3 views 1 likes 
    1

    나는 amazon s3 서비스 및 php로 인해 writed 된 웹 서비스에 문제가 있습니다. 이 WS는 base64로 인코딩 된 파일을 $ _POST에서 수신합니다. 이 "문자열"을 가져 와서 Amazon S3 버킷에 저장해야합니다. 그 일을 위해 올바른 해결책을 찾지 못했고, 일주일이 지난 후에 저는 여기서 도움을 찾고 있습니다.

    //$file = 'kdK9IWUAAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd' 
    $file = $_POST['some_file']; 
    $opt = array(
         'fileUpload' => base64_decode($file), 
         'acl' => AmazonS3::ACL_PUBLIC 
        ); 
    $s3 = new AmazonS3(AWS_KEY, AWS_SECRET_KEY); 
    $response = $s3->create_object($bucket, $filename, $opt); 
    

    감사

    답변

    1

    the docs 당, fileUpload는 URL 또는 경로 또는 fopen 자원을 예상하고있다.

    fileUpload - string|resource - 필수; 조건부 - 업로드 할 파일의 URL/경로 또는 공개 자원입니다. 이 매개 변수 또는 body이 필요합니다.

    당신은 대신 body 매개 변수를 통해 디코딩 된 파일 데이터를 전달해야합니다

    body-string - 필수; 조건부 - 개체에 저장할 데이터입니다. 이 매개 변수 또는 fileUpload을 지정해야합니다.

    +0

    감사합니다. 그러나 나는 더 이상 필요합니다 .. 이제 파일을 저장합니다 (때로는 이미지),하지만 브라우저에서 열면 파일이 손상되었다고 말합니다. 제안 사항이 있으십니까? – Matte

    0

    imagestring은 POST 데이터에서 전달 된 base64로 인코딩 된 문자열입니다. 이 이미지를 인코딩하고 어디서나 파일을 만들 수 있습니다 - 내 사례/사진. 나는 이것을 학교 서버로 사용했지만 아마존 서버가 충분히 유사하다면 아마존 서버에서도 작동 할 수 있습니다.

    $values = array(); 
        foreach($_POST as $k => $v){ 
         $values[$k] = $v; 
        } 
        $imagestring = $values['stringEncodedImage']; 
    
        $img = imagecreatefromstring(base64_decode($imagestring)); 
         if($img != false) 
         { 
          echo 'making the file!'; 
          imagejpeg($img, 'photos/'.$file_name); 
         } 
    
    관련 문제