Harry
Harry

Reputation: 13329

Uploading an HTML file via HTML5

I have this weird issue that Im not sure if its normal or not.. Im sure its not

I have a drag and drop area that I can upload any file and it works like a charm.

EXCEPT...

I cant upload any .html or .htm files with it. I can take an html file and rename it to .jpg and it works.

This is my piece of code:

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')

It even shows that upload progress then at 100% when it needs to push it the server it just fails with Bad Request. (the server never gets any request)

It works if the HTML file has 0 content! Why I do not know

UPDATE:

After some playing around I see that the request works when setting the Content-Type to text/plain:

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

As soon as I change to text/html it does not work if the file has any content:

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

Could this be a bug?

I sent this as a possible XML bug

Upvotes: 1

Views: 118

Answers (1)

Mooseman
Mooseman

Reputation: 18891

Use jQuery .ajax() instead. Specify type:'PUT' for an upload. For example, using your URL:

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

Upvotes: 1

Related Questions