2014-02-18 5 views
0

Мы разрабатываем библиотеку javascript для доступа к серверу webdav. И найдите трудности при разработке функциональных возможностей загрузки. Мы считаем, что мы должны использовать HTTP PUT для загрузки и разработки наших кодов загрузки с помощью HTTP PUT. Было нормально загружать файлы, используя http put to webdav server.Как я могу загрузить файл размера HTTP PUT 0 с помощью XMLHttpRequest в javascript?

Но когда мы пытаемся загрузить пустой контент с помощью HTTP PUT, сервер отвечает 411 (требуется длина). Мы устанавливаем заголовок длины контента, но сервер по-прежнему отвечает 411. Мы не знаем, почему.

  1. Правильно ли создавать webdav-загрузку с помощью HTTP PUT?
  2. Если это так, как мы можем разработать файл 0 размера с помощью webdav?

Ниже приведены наши тестовые коды.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Upload Testing</title> 
    <script type="text/javascript"> 

     function ready() { 
      alert('ready'); 
      doPUT('http://hqz.witkitty.com/soliton.co.jp/modc/emptyfile.txt', '', function() { 
       alert('success'); 
      }, function (e) { 
       alert('error ' + e.status); 
      }); 
     } 

     function doPUT(path, data, callback, errback) { 
      alert("going to upload"); 
      var request = createXMLHttpRequest(); 
      request.onreadystatechange = function() { 
       if (request.readyState == 4) { 
        if (request.status == 201 || request.status == 204) { 
         if (callback) callback(request); 
        } else { 
         if (errback) errback(request); 
        } 
       } 
      } 
      request.open('PUT', path, true); 
      request.setRequestHeader('Content-type', 'application/pdf'); 
      request.setRequestHeader('Content-length', 0); 

      request.send(data); 
     } 

     function createXMLHttpRequest() { 
      return window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    </script> 
</head> 
<body> 
<input type="button" onclick="ready()" value='Test Uploading'/> 
</body> 
</html> 

ответ

1

Это звучит как ошибка в пользовательском агенте или на сервере.

a) Это происходит со всеми агентами пользователя?

b) Можете ли вы захватить трассировку HTTP и проверить, присутствует ли поле заголовка Content-Length?

+0

спасибо. Это происходит только в нашем пользовательском агенте, и это может быть ошибка нашего пользовательского агента. Как ваш совет, мы попробовали с другим пользовательским агентом, все в порядке. – FranXho

 Смежные вопросы

  • Нет связанных вопросов^_^