Java: как загрузить файл на сервер WebDAV с сервлета?
мое приложение ajax загружает файл в контейнер приложения Java из браузера пользователя. Я хотел бы сделать следующее: после завершения загрузки я хочу "отправить" файл на сервер WebDAV, идентифицированный именем хоста (т. е. localhost), портом (т. е. 8080) и местом, где я хочу сохранить файл (т. е. dir1/dir2).
то, что мне нужно, - это в основном клиентская платформа WebDAV, которая позволяет мне загружать файл в WebDAV. В моем приложении я уже использую "webdavclient4j", но я, похоже, не нашел способ загрузить файл с ним?
какие идеи? Заранее спасибо за любую помощь, которую вы можете предоставить.
F
2 ответов
Вы можете сделать это всего с несколькими строками кода, используя мой недавно выпущенный и очень простой в использовании современный клиент webdav для java, Sardine. Вот несколько примеров (первый использует commons-io для чтения файла):
Sardine sardine = SardineFactory.begin("username", "password");
byte[] data = FileUtils.readFileToByteArray(new File("/file/on/disk"));
sardine.put("http://yourdavserver.com/adirectory/nameOfFile.jpg", data);
или с использованием потоков:
Sardine sardine = SardineFactory.begin("username", "password");
InputStream fis = new FileInputStream(new File("/some/file/on/disk.txt"));
sardine.put("http://yourdavserver.com/adirectory/nameOfFile.jpg", fis);
https://github.com/lookfirst/sardine
спасибо,
Йон
можно использовать Библиотека WebDAV Зайца.
пример клиента WebDAV для загрузки содержимого на сервер WebDAV (взято из здесь):
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.jackrabbit.webdav.client.methods.PutMethod;
...
// WebDAV URL:
final String baseUrl = ...;
// Source file to upload:
File f = ...;
try{
HttpClient client = new HttpClient();
Credentials creds = new UsernamePasswordCredentials("username", "password");
client.getState().setCredentials(AuthScope.ANY, creds);
PutMethod method = new PutMethod(baseUrl + "/" + f.getName());
RequestEntity requestEntity = new InputStreamRequestEntity(
new FileInputStream(f));
method.setRequestEntity(requestEntity);
client.executeMethod(method);
System.out.println(method.getStatusCode() + " " + method.getStatusText());
}
catch(HttpException ex){
// Handle Exception
}
catch(IOException ex){
// Handle Exception
}