2012-07-04 48 views
5

Tất cả tài liệu tôi tìm thấy liên quan đến việc tạo tệp mới và đưa tệp mới vào thư mục Google Drive của người dùng. người dùng tải lên tệp và có tập lệnh python sử dụng MediaFileUpload để thu thập tệp và đặt tệp đó vào Drive.API Google Drive V2, Python - tạo tệp mới mà không cần tải lên tệp mới và không sử dụng giao diện người dùng Google Drive

Tôi muốn tạo tệp mới trong mã GAE của mình và đặt nó. Ví dụ: mã của tôi hiển thị chuỗi XML mới sau khi nhấn vào cơ sở dữ liệu và tôi muốn lấy chuỗi đó, tạo một tệp và đặt trong Google Drive.

Bất kỳ ai làm việc với nội dung như thế này?

Trả lời

4

Thay vào đó, bạn nên sử dụng MediaInMemoryUpload, được thiết kế cho mục đích chính xác này. Bạn có thể vượt qua một chuỗi và một loại MIME.

media = MediaInMemoryUpload('some data', 'text/plain') 
+0

DEPRECATED: Sử dụng MediaIoBaseUpload với io.TextIOBase hoặc StringIO cho luồng. http://google.github.io/google-api-python-client/docs/epy/index.html – intotecho

1

Sử dụng mã sau, nội dung là chuỗi bạn sắp đặt. Bạn không cần phải sử dụng MediaFileUpload và thư viện máy khách python.

def update(content, file_id): 
    url = 'https://www.googleapis.com/upload/drive/v2/files/%s?uploadType=media' % file_id 
    headers = { 
     'Content-Type': 'text/plain', 
     'Content-Length': str(len(content)), 
     'Authorization': 'Bearer <oauth2 token>' 
     } 
    response = urlfetch.fetch(url, payload=content, method='PUT', headers=headers) 
    assert response.status_code == 200 
    return response.content 
+0

Điều đó hoạt động nếu 1. bạn không cần thêm siêu dữ liệu, ví dụ: mô tả và 2. với tệp <= 2MB kích thước. –

+0

Có, nếu bạn muốn thêm siêu dữ liệu, vui lòng ĐĂNG siêu dữ liệu để tạo tệp mới trước khi gọi hàm này; hoặc POST một phần nhiều phần để tải lên tệp có siêu dữ liệu. (nhưng tôi vẫn chưa thành công về điều đó.) – Takahiro

+0

eric.f, bạn đang làm điều này: https://developers.google.com/drive/manage-uploads#using_multipart_upload –

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