2012-02-17 45 views
5

Liên quan đến câu hỏi này Upload File Directly to S3 with Progress Bar, tôi muốn biết liệu có bản cập nhật hay cách khác để làm điều này mà không cần sử dụng flash hay applet java?Tải lên trực tiếp s3 với thanh tiến trình bằng cách sử dụng php

Tôi đã cố gắng sử dụng swfupload_s3 này http://swfupload.org/forum/generaldiscussion/2185, nó hoạt động nhưng tiếc là thanh tiến trình bắn đến 100% và các mặt hàng này,

(1) Proxy Servers địa phương và một số phần mềm Anti-Virus sẽ gây hành vi này . Thay vì gửi tải lên máy chủ, phần mềm chống vi-rút chặn tải lên và chấp nhận toàn bộ tệp. SWFUpload đã gửi toàn bộ tệp và hiển thị 100%. Điều này xảy ra nhanh chóng vì không có gì được gửi đi, tất cả đều xảy ra ở địa phương. Chương trình chống vi-rút sau đó quét tệp bị chặn và gửi tệp đó đến máy chủ . Trong khi đó SWFupload đang ngồi chặt chẽ ở mức 100%. Sau khi vi-rút chống vi-rút đã gửi tệp, máy chủ phản hồi và SWFUpload "hoàn tất"

(2) Vấn đề đã biết. Chúng tôi đã ghi lại điều này. Không có việc gì xung quanh. Đây là cách nó sẽ làm việc cho bất kỳ phía khách hàng chỉ tải lên công cụ khi anti-virus gây trở ngại cho việc tải lên

http://swfupload.org/forum/generaldiscussion/642 (1)
http://code.google.com/p/swfupload/issues/detail?id=213 (2)

tôi đã được về vấn đề này trong 2 nhưng tôi dường như không tìm được cách khác. Hay không có gì cả?

Trả lời

0

Có một nguồn php script mở với một API S3 cho tập tin tải lên, nó trở sự tiến bộ của tải lên trong thời gian thực và bạn có thể tùy chỉnh giao diện người dùng tải lên cũng như nếu bạn muốn như vậy:

http://www.plupload.com/

0

Tôi đã quản lý để làm việc này trên SDK PHP v3 của AWS.

$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 
      ); 
     } 
    ] 
]); 

Điều này được giải thích trong tài liệu AWS - S3 Config section. Nó hoạt động bằng cách phơi bày số điện thoại progress của GuzzleHttp, như được giải thích trong this SO answer.

Các vấn đề liên quan