2011-08-02 61 views
0

我試圖使用html輸入類型file和python模塊youtube-upload將用戶上傳的視頻提交給YouTube。當表單提交它像這樣處理的:在臨時內存中訪問用戶上傳視頻的問題

if request.method == 'POST': 
    video = request.FILES['file'] 

    v=str(video) 

    command = 'youtube-upload [email protected] --password=password --title=title --description=description --category=Sports ' + v 

    r = subprocess.Popen(command, stdout=subprocess.PIPE) 
    v = r.stdout.read() 

所以我認爲問題是,我需要爲視頻更完整路徑。如果是這種情況,在臨時存儲器中訪問視頻的路徑是什麼。

該命令的一般是: youtube-upload --email=email --password=password --title=title --description=description --category=category video.avi

另外,我已經看過了YouTube API取得具體here但如果有人可以提供如何使用API​​來做到這一點在Python更完整的解釋,即會很棒。不幸的是,網站上的指南只關注xml。

編輯FOLLOWING sacabuche的評論:

所以我的看法是,現在大致是:

def upload_video(request): 
    if request.method == 'POST': 
     video = request.FILE['file'] 
     v = video.temporary_file_path 
     command = 'youtube-upload [email protected] --password=password --title=title --description=description --category=Sports ' + v 

     r=subprocess.Popen(command, stdout=subprocess.PIPE) 

     vid = r.stdout.read() 
    else: 
     form = VideoForm() 
     request.upload_handlers.pop(0) 
    return render_to_response('create_check.html', RequestContext(request, locals())) 

v=video.temporary_file_path得出錯誤'InMemoryUploadedFile' object has no attribute 'temporary_file_path'。因此,視頻仍處於臨時內存中,我不知道temporary_file_path應該被調用或如何獲取所述對象。

+0

你改變了你的FILE_UPLOAD_HANDLERS文件路徑? – sacabuche

回答

1

其實django將文件保存在內存中,但大文件保存在路徑中。
的「大文件」大小可以使用FILE_UPLOAD_MAX_MEMORY_SIZE

FILE_UPLOAD_HANDLERS默認設置中定義爲:

("django.core.files.uploadhandler.MemoryFileUploadHandler", 
"django.core.files.uploadhandler.TemporaryFileUploadHandler",) 

這給我們兩個可能性:

1.拆下內存處理器

刪除..MemoryFileUploadHandler但您的所有文件都將保存在臨時文件中並且這不是很酷

2.隨意修改

docs here

#views.py 

def video_upload(request): 
    # this removes the first handler (MemoryFile....) 
    request.upload_handlers.pop(0) 
    return _video_upload(request) 

def _video_upload(request): 
    .... 

的處理程序,讓你只需要做video.temporary_file_path

+0

所有這些都寫在[docs](https://docs.djangoproject.com/en/dev/topics/http/file-uploads/#file-uploads) – sacabuche