2009-10-02 13 views
8

Tôi đang phát triển trình tải lên hình ảnh trong Flash. Tôi sử dụng FileReference.browse để duyệt hình ảnh sau đó thay đổi kích thước hình ảnh này đến 1000 x 1000 px, nếu hình ảnh là rất lớn và sau đó tải lên máy chủ. Tôi muốn hiển thị thanh tiến trình cho tiến trình tải lên hình ảnh.Tiến trình tải lên hình ảnh bằng cách sử dụng URLLoader AS3

Tôi đang sử dụng URLLoader để gửi dữ liệu nhị phân của các hình ảnh được thay đổi kích thước, nhưng ProgressEvent trên URLLoader không hoạt động theo cách mà nó được cho là hoạt động. Nó chỉ được kích hoạt sau khi ảnh được tải lên hoàn tất thay vì hiển thị tiến trình trung gian. ProgressEvent trên FileReference hoạt động hoàn hảo để hiển thị tiến trình tải lên hình ảnh trung gian.

Có cách nào để hiển thị tiến trình tải lên bằng cách sử dụng URLLoader không? hoặc

Chúng ta có thể sử dụng FileReference để tải hình ảnh đã sửa đổi và sau đó gọi FileReference.upload, theo cách đó, nó sẽ có thể hiển thị thanh tiến trình thực tế.


Cập nhật 1:
Nhưng vấn đề của tôi là tôi đang thay đổi kích thước hình ảnh duyệt sau khi sử dụng FileReference.browse, và tôi muốn tải lên hình ảnh thay đổi kích cỡ, không phải là hình ảnh gốc trong đối tượng FileReference sau khi trình duyệt. Làm cách nào để sử dụng Filereference.upload trong trường hợp này? Filereference.upload sẽ tải lên hình ảnh gốc chứ không phải hình ảnh đã thay đổi kích thước. Bất kỳ ý tưởng, làm thế nào để đưa hình ảnh thay đổi kích cỡ thành đối tượng Filereference và sau đó sử dụng FileReference.upload.


Cập nhật 2:
Không thể thiết lập dữ liệu trong FileReference giả, dữ liệu là chỉ đọc tài sản.


Cập nhật 3:
Nhưng điều này có cùng một vấn đề của không hiển thị tiến trình tải lên hình ảnh, từ liên kết ở trên.

"Thật không may có một vấn đề nhận được sự kiện tiến bộ Chúng tôi không thể hiển thị bất kỳ tiến bộ trong khi gửi dữ liệu đến máy chủ vì flash không hỗ trợ "

Tôi đang tìm kiếm giải pháp cho vấn đề trên. URLLoader hoạt động tốt để đăng dữ liệu hình ảnh.

+0

Tôi đang làm điều tương tự CHÍNH XÁC và vấp phải cùng một vấn đề. Tôi đang nghĩ đến việc đặt "thanh tải không chính xác" trong khi quá trình tải lên đang diễn ra. – Danita

+0

Cho rằng trong trường hợp của tôi tập tin kết quả * thường * có cùng kích thước, tôi đã kết thúc thiết lập Bộ hẹn giờ với thời gian ước tính tải lên trong * hầu hết * tình huống và nhận bộ hẹn giờ đó để kích hoạt ProgressEvents cho thanh tiến trình cập nhật . Nó tốt hơn không có gì và người dùng không thể nói sự khác biệt. – Danita

+0

Bây giờ thats những gì tôi gọi là một 'giải pháp brillant'. – Tom

Trả lời

0

Sử dụng FileReference.upload, đó là cách cụ thể của phương pháp đó và bạn sẽ có chỉ báo tiến trình của mình.

+0

Anh ấy không cố gắng tải lên tệp gốc, nhưng ByteArray của mã hóa JPEG của kết quả thay đổi kích thước của tệp gốc. – Danita

+0

Hmm, có thể thề rằng câu hỏi ban đầu đã không đề cập đến ... ồ, tôi đã đăng lại một câu trả lời mới áp dụng cho tình huống hiện tại. – JStriedl

4

URLLoader được thiết lập theo cách không thể nhận sự kiện tiến độ cho đến khi tải hoàn tất, như được ghi chú HERE trong tài liệu. Bạn có thể sử dụng URLStream thay vì để có được sự kiện tiến bộ như bạn mong muốn? Tôi không chắc liệu sự kiện tiến trình cho URLStream có chỉ kích hoạt phản hồi của máy chủ hay không hoặc nếu họ sẽ kích hoạt giao dịch đầy đủ (tải lên & tải xuống), các tài liệu dường như không chỉ định chính xác.

+1

Điều này đã được upvoted hai lần ... Tôi tự hỏi nếu có ai đã thử nó và xác nhận nếu URLStream gửi sự kiện tiến bộ thích hợp? Tôi đã đọc ở nơi khác mà nó không, nhưng cho đến nay không có nguồn dứt khoát ... Oh well. – Cameron

+0

Tôi không thấy bất kỳ điều gì trong URLStream có thể gợi ý rằng nó có thể được sử dụng để tải lên bất kỳ thứ gì! Tài liệu mô tả chi tiết Tải xuống một cách chi tiết, nhưng thậm chí không có phương thức tải lên. Bạn có thể chỉ định cách bạn sẽ sử dụng nó để tải lên một tệp không? –