2012-02-17 3 views
5

이 질문에 관해서는 Upload File Directly to S3 with Progress Bar입니다. 업데이트 또는 플래시 또는 자바 애플릿을 사용하지 않고이 작업을 수행 할 수있는 다른 방법이 있는지 알고 싶습니다.PHP를 사용하여 진행 막대를 사용하여 s3에 직접 업로드

나는 그것이 작동이 swfupload_s3 http://swfupload.org/forum/generaldiscussion/2185를 사용하여 시도했지만 불행히도 진행률 표시 줄이 100 %로 촬영이 발견

(1) 로컬 프록시 서버 및 일부 안티 바이러스 소프트웨어는이 행동의 원인이됩니다 . 업로드를 서버에 보내는 대신 바이러스 백신 소프트웨어 이 업로드를 가로 채고 전체 파일을 허용합니다. SWFUpload 이 전체 파일을 보내고 100 %를 표시합니다. 이것은 아직 아무 것도 보내지 않았기 때문에 빨리 일어납니다. 모두 로컬 일뿐입니다. 바이러스 백신은 차단 된 파일을 검색하여 서버로 보냅니다. 한편 SWFupload 100 %에서 꽉 앉아있다. 바이러스 백신이 파일을 보낸 후 서버가 응답하고 SWFUpload "완료"

(2) 알려진 문제. 우리는 이미 이것을 문서화했다. 주변에 해결 방법이 없습니다. 이것은 안티 바이러스가 업로드

http://swfupload.org/forum/generaldiscussion/642 (1)을 방해 할 때 어떤 클라이언트 측에만 도구를 업로드 작동하는 방법이다
http://code.google.com/p/swfupload/issues/detail?id=213 (2)

나는 2이에왔다 며칠이지만 다른 길은 찾을 수없는 것 같습니다. 아니면 전혀 없습니다.

답변

0

파일 업로드에 대한 S3의 API와 오픈 소스 PHP 스크립트 그것은 실시간으로 업로드 진행 상황을 반환하지 않습니다 그리고 당신은뿐만 아니라 업 로더 UI를 사용자 정의 할 수 있습니다 만약 당신이 그렇게 욕망 :

http://www.plupload.com/

0

AWS의 PHP SDK v3에서이 작업을 처리 할 수있었습니다.

$client = new S3Client(/* config */); 

$result = $client->putObject([ 
    'Bucket'  => 'bucket-name', 
    'Key'  => 'bucket-name/file.ext', 
    'SourceFile' => 'local-file.ext', 
    'ContentType' => 'application/pdf', 
    '@http' => [ 
     'progress' => function ($downloadTotalSize, $downloadSizeSoFar, $uploadTotalSize, $uploadSizeSoFar) { 
      printf(
       "%s of %s downloaded, %s of %s uploaded.\n", 
       $downloadSizeSoFar, 
       $downloadTotalSize, 
       $uploadSizeSoFar, 
       $uploadTotalSize 
      ); 
     } 
    ] 
]); 

이 내용은 AWS docs - S3 Config section에서 설명합니다. this SO answer에서 설명한 GuzzleHttp의 progress 속성 호출 가능을 노출하여 작동합니다.

관련 문제