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