我有这个奇怪的问题,我不确定它是否正常..我确定它不是
我有一个拖放区域,我可以上传任何文件,它就像一个魅力。
...除外
我无法上传任何.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错误
答案 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');
}
});