1

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

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

除了...

我不能用它上传任何 .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 错误发送

4

1 回答 1

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');
   }
});
于 2013-05-20T15:17:35.517 回答