2009-03-10 8 views
6

chúng tôi đang cố gắng sử dụng API của Google YouTube để tải video từ trang web của chúng tôi lên YouTube thông qua trình duyệt trực tiếp.Tích hợp API YouTube ASP.NET - tải lên video với một trang duy nhất

API hoạt động theo hai bước, trong bước đầu tiên, chúng tôi cần tạo đối tượng Video với tất cả siêu dữ liệu như tiêu đề, thẻ, mô tả, danh mục, v.v. Sau đó, chúng tôi cần gửi yêu cầu này tới YouTube và nhận một đối tượng Mã thông báo được tạo ra như một phản hồi. Đối tượng token này có một Token Value và một Token URL với tư cách là thành viên của nó.

Trong bước thứ hai, chúng đề xuất rằng chúng ta nên tạo Biểu mẫu có thuộc tính hành động được đặt thành URL Token. Biểu mẫu này phải có quyền kiểm soát tải lên tệp và trường ẩn với Giá trị mã thông báo là giá trị của nó. Khi biểu mẫu này được đăng, biểu mẫu sẽ tải video lên YouTube.

Điều này rất hữu ích nếu chúng tôi có quy trình gồm hai bước, trước tiên yêu cầu người dùng siêu dữ liệu và sau đó chuyển hướng họ đến trang thứ hai để tải video lên thực tế. Tuy nhiên, chúng tôi đang cố gắng thực hiện điều này trong một trang, xuất hiện dưới dạng một bước cho người dùng.

Chúng tôi có một MasterPage với 'aspnetForm' được chỉ định trong đó, vì chúng tôi không thể có một biểu mẫu khác với thuộc tính runat='server'.

Chúng tôi đã thử sửa đổi thuộc tính hành động của aspnetFrom bằng cách sử dụng JavaScript/code-behind nhưng nó vẫn giữ nguyên, bất kể chúng ta làm gì.

Chúng tôi cũng đã cố gắng đặt một biểu mẫu lồng nhau khác, thẻ hành động của họ sẽ được đặt trên sự kiện nhấp nút, sau khi nhận được phản hồi đầu tiên từ YouTube với mã thông báo. Nhưng ngay cả điều này không hoạt động, vì hình thức này không được tạo ra tại thời điểm mà phương thức này được gọi là ..

Chúng tôi đã thử một số cách tiếp cận nhưng không có cách nào hoạt động .. bất kỳ đề xuất nào về điều này sẽ tuyệt vời.

Nếu bạn có thắc mắc gì hơn để hiểu tình hình rõ ràng .. xin vui lòng cho tôi biết ..


Cập nhật:

Thanks for the guys câu trả lời.

Chúng tôi đã thay đổi logic nghiệp vụ một chút để giải quyết vấn đề. Nó đã lâu trở lại và tôi không tìm kiếm một giải pháp như bây giờ ..

Tuy nhiên, câu hỏi vẫn mở và nhận được phản hồi. Tôi thực sự đánh giá cao tất cả sự giúp đỡ và do đó, sẽ để lại câu hỏi mở cho bất kỳ cuộc thảo luận thêm.

Trả lời

2

tôi sẽ tạo ra một hình thức mà bạn hiển thị cho người sử dụng với các lĩnh vực văn bản cho các siêu dữ liệu và một control file upload cho video.

Sau đó, trong mã xử lý đăng lại, bạn có thể gửi siêu dữ liệu tới API YouTube để nhận Giá trị mã thông báo.

Sau đó, bạn tạo HttpWebRequest với Giá trị mã thông báo được chuyển vào phương thức Create của đối tượng WebRequest và đặt thuộc tính Method thành Post. Sau đó, bạn thêm video đã tải lên (xem dr evil's answer to "Upload files with HTTPWebrequest (multipart/form-data)" để biết thêm thông tin về điều đó) và khi bạn gọi GetResponse(), tệp của bạn sẽ được gửi.

Những điều cần xem ra cho:

  1. ScriptTimeout: Nếu bạn đang cho phép người dùng của bạn để tải file lớn lên YouTube - nếu nó mất một thời gian để bạn có thể chuyển nó, sau đó kịch bản của bạn có thể được chấm dứt sớm .
  2. Băng thông: Bạn sẽ có cả video tải lên máy chủ của mình và sau đó tải lên YouTube - bằng cách cho phép người dùng tải trực tiếp lên YouTube trong quá trình gồm hai bước mà bạn không bao giờ chạm vào video và video đó không bao giờ gần máy chủ của bạn - đây có thể là vấn đề cho bạn hoặc nhà cung cấp dịch vụ lưu trữ của bạn - ví dụ: máy chủ lưu trữ của tôi không tính lưu lượng truy cập qua FTP trong băng thông hàng tháng của tôi, nhưng bao gồm các tệp được tải lên/tải xuống thông qua trang web.
+0

yeah .. Cách tiếp cận này có vẻ là gần gũi nhất về những gì chúng tôi cuối cùng đã kết thúc làm. .: 0) –

0

Bạn có thể đăng lên biểu mẫu YouTube theo chương trình. Gần đây tôi đã sửa đổi ví dụ được tìm thấy tại http://www.codeproject.com/KB/cs/uploadfileex.aspx để viết một số mã đã đăng tệp lên trang web của bên thứ ba dưới dạng công việc hàng đêm.

Điều này sẽ bao gồm lượt truy cập hiệu suất vì tệp sẽ phải được tải lên máy chủ của bạn và sau đó chuyển tới YouTube thay vì trực tiếp lên YouTube, nhưng đó là một tùy chọn.

+0

yeah..i đã nghĩ đến việc làm điều đó như là phương sách cuối cùng .. :( cảm ơn vì sự giúp đỡ mặc dù .. –