通过HTML5上传HTML文件

时间:2013-05-20 14:59:54

标签: html5 xmlhttprequest html5-filesystem

我有这个奇怪的问题,我不确定它是否正常..我确定它不是

我有一个拖放区域,我可以上传任何文件,它就像一个魅力。

...除外

我无法上传任何.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,则有效!为什么我不知道

更新

经过一些游戏后,我发现在将Content-Type设置为text / plain时,请求有效:

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

一旦我更改为text / html,如果文件包含任何内容,它就不起作用:

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

这可能是个错误吗?

我发送此文件作为可能的XML错误

1 个答案:

答案 0 :(得分:1)

使用jQuery .ajax()代替。为上传指定type:'PUT'。例如,使用您的网址:

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