2013-05-20 12 views
1

上傳HTML文件,我有這個奇怪的問題,即時通訊,如果不正常或不..我敢肯定,肯定它不是通過HTML5

我有一個拖放,我可以上傳任何文件區域,它的工作原理是魅力。

除非...

我不能上傳任何的.html或.htm文件與它。我可以帶一個html文件並將其重命名爲.jpg並且它可以工作。

這是我的一段代碼:

xhr = new XMLHttpRequest() 
xhr.open 'PUT', "#{tvr.api.url}/transfer/#{userprofile.UserLink.LinkID}/#{userprofile.UserLink.UserName}/#{channelid}/#{filename}" 
xhr.upload.addEventListener "progress", (event, filename) => 
    window.Appbusy = true 
    $($(".file-status-#{uid}").find("span")).text("(#{((event.loaded/event.totalSize)*100).toFixed(2)}%)") 
,false 
xhr.onreadystatechange = (aEvt) -> 
    if xhr.readyState is 4 
    if xhr.status is not 200 
     $(".notification").remove() 
     notification("The server returned an error uploading the file. Please try again.", 'error') 

它甚至表明,上傳進度,然後在100%時,它需要推動它,它只是失敗,錯誤的請求服務器。 (服務器從來沒有得到任何請求)

它工作,如果HTML文件有0內容!爲什麼我不知道

UPDATE:

一些上場後我周圍看到,請求工作時設置的內容類型爲text/plain的:只要我改變

xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); 

xhr.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); 

:爲text/html,如果文件中有任何內容不工作這可能是一個錯誤?

我給這個作爲一個可能的XML錯誤

+0

既然你已經使用jQuery('$(「。notification」)。remove()'等),爲什麼不使用jQuery來處理put請求呢? – Mooseman

+0

我會試試看看它是否有所作爲。我仍然認爲它是一個有趣的問題 – Harry

+1

這確實有效......但爲什麼? – Harry

回答

1

使用jQuery .ajax()代替。指定type:'PUT'進行上傳。例如,使用你的URL:

$.ajax({ 
    type:"PUT" 
    url:"#{tvr.api.url}/transfer/#{userprofile.UserLink.LinkID}/#{userprofile.UserLink.UserName}/#{channelid}/#{filename}"  
    success: function(){ 
     alert('success'); 
    } 
}); 
+0

如果你反而說,爲什麼?我不認爲它是一個解決方案,儘管它有效。 – Harry

+0

你會如何獲得上傳的進度? – Harry