2016-11-27 32 views
1

嘰嘰喳喳我要上傳圖片到Twitter採取的一個Django形式:上傳的圖像通過tweepy從Django的形式

<div class="panel panel-danger"> 
       <div class="panel-heading"> 
        <h3 class="panel-title">Panel title</h3> 
       </div> 
       <div class="panel-body"> 
        <form action="" method="POST" role="form" enctype="multipart/form-data"> 
         {% csrf_token %} 
         <legend>Upload a file: </legend> 

         <div class="form-group"> 
          <input type="file" name="file" class="form-control" id=""> 
         </div> 



         <button type="submit" class="btn btn-primary">Submit</button> 
        </form> 
       </div> 
      </div> 

我得到的圖像是:

if fileForm.is_valid(): 
      print "file is uploaded." 
      paramFile = open(request.FILES['file'],'rb') 
      # paramFile = request.FILES['file'].read() 
      api.update_with_media(paramFile,status="Hello first image") 

錯誤我得到的是:

強迫爲Unicode:需要字符串或緩衝區,InMemoryUploadedFile發現

我怎樣才能把這個上傳到twitter?

回答

1

方法update_with_media()只有一個需要文件名的位置參數。 所以,你可以指定文件名是這樣的:

api.update_with_media(request.FILES['file'].name, 
         status="Hello first image") 

而且你應該使用關鍵字參數「文件」傳遞文件:

api.update_with_media(request.FILES['file'].name, 
         file=request.FILES['file'], 
         status="Hello first image") 
1

根據docs,您必須同時通過內部打開的file參數和確定MIME類型所需的filename參數,並將用作後期數據中的表單字段。所以只要將它們明確地作爲關鍵字參數傳遞,你應該沒問題。