Мы разрабатываем библиотеку javascript для доступа к серверу webdav. И найдите трудности при разработке функциональных возможностей загрузки. Мы считаем, что мы должны использовать HTTP PUT для загрузки и разработки наших кодов загрузки с помощью HTTP PUT. Было нормально загружать файлы, используя http put to webdav server.Как я могу загрузить файл размера HTTP PUT 0 с помощью XMLHttpRequest в javascript?
Но когда мы пытаемся загрузить пустой контент с помощью HTTP PUT, сервер отвечает 411 (требуется длина). Мы устанавливаем заголовок длины контента, но сервер по-прежнему отвечает 411. Мы не знаем, почему.
- Правильно ли создавать webdav-загрузку с помощью HTTP PUT?
- Если это так, как мы можем разработать файл 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>
спасибо. Это происходит только в нашем пользовательском агенте, и это может быть ошибка нашего пользовательского агента. Как ваш совет, мы попробовали с другим пользовательским агентом, все в порядке. – FranXho