2011-08-26 27 views
0

我想上傳圖片使用Flex到ImageShack的,但不斷收到ImageShack的上傳和wrong_file_type

<links> 
<error id="wrong_file_type">Wrong file type detected for file IMG_00000009.jpg:application/octet-stream</error> 
</links> 

我試圖改變MIME類型,但似乎沒有相當做到這一點。

這裏是我的方法是這樣的:

protected function onUpload(event:MouseEvent):void 
{ 
    trace('uploading') 
    fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, completeHandler); 
    var params:URLVariables = new URLVariables(); 
    params.key = key; 
    var request:URLRequest = new URLRequest("http://www.imageshack.us/upload_api.php"); 
    request.method = URLRequestMethod.POST; 
    request.data = params; 
    fileRef.upload(request, "fileupload"); 
} 

任何人都可以在這裏給我的手,告訴我,我,M做錯了嗎?我已經看過所有圍繞谷歌和這裏,但無法找到任何解決方法他的動作。

在此先感謝

回答

1

多部分表單上傳有多種內容類型。一個用於主要提交,另一個用於每個部分。使用FileReference.upload()方法時,不能設置它們中的任何一個。不幸的是,你可能不得不使用imageshack想要的內容類型來構建自己的多部分表單上傳。你可以使用URLLoader類來做到這一點,但它並不漂亮。

這裏是一個應該讓你開始(可能是你可以使用它沒有修改)類:http://code.google.com/p/in-spirit/source/browse/#svn%2Ftrunk%2Fprojects%2FMultipartURLLoader%2Fru%2Finspirit

你也可以問ImageShack的代表的Flash開發人員接受無處不在的應用程序/八位字節流的圖像。

您還可以通過http://bugbase.adobe.com提交缺陷/增強請求(該功能被記錄爲以這種方式工作,因此它更像是增強請求)。

+0

這正是我最終做的,所以我會將這個標記爲相關答案。關於我在這裏所做的更多細節:http://stackoverflow.com/questions/7298842/uploading-bytearray-via-urlrequest無論如何 –

0

嗯,首先,你不聽爲可能發生的(這可能是這種情況)的任何錯誤,如果你想調試,您應當在使用類似的開發者Chrome中的面板或firefox中的firebug來查看http請求。

做一個快速瀏覽一下API,我看到這麼一個小節目:

支持的參數是:

  • 文件上傳; (輸入類型=「文件」) - 圖像或視頻文件。除非指定了url參數,否則必須輸入 。
  • frmupload; (輸入類型=「文件」) - 視頻默認幀圖片。 可選,僅用於視頻上傳。當您上傳視頻 時,您可以提供一個默認幀,當視頻停止時,將顯示 。此圖像的尺寸應與視頻文件的 相同,以避免屏幕上出現人爲現象。
  • url;此參數表示使用transload方法代替上傳optsize的 ;如果圖像是 上傳/轉載,則調整WxH格式圖像的選項大小。對視頻上傳沒有影響。
  • rembar;開發人員可以告訴ImageShack在ImageShack生成的縮略圖圖像上留下/刪除 信息欄。如果您已將 提供的此參數設置爲yes或1,則生成的縮略圖 將沒有信息欄。對視頻上傳標籤沒有影響; A 用逗號分隔的標籤列表添加到您的視頻/圖像。例如。 家庭,圖片。可選
  • public;您的視頻/圖片的公開/私人標記。是的意思是 公共(默認),不意味着私人。可選
  • cookie;註冊碼,可選。
  • a_username;用戶名,可選。
  • a_password;密碼,可選。
  • key;您的DeveloperKey。強制性。

我相信你錯過要麼爲它工作的urlfileupload參數。

+0

沒有錯誤發生,並且xml被imageshack返回,另外,我傳遞了fileupload,就像你在我的代碼片段中看到的那樣:fileRef.upload(request,「fileupload」); –

+0

啊,我認爲這是發送錯誤的內容類型的帖子。默認情況下,FileReference發送'Content-Type:application/octet-stream'。你需要將它改成ImageShack所需要的(一個圖像可能?)。 –

+0

這就是我的問題,我似乎無法改變這種情況。你能告訴我該怎麼做嗎?謝謝 –