2010-02-14 14 views
7

मेरा AJAX एप्लिकेशन उपयोगकर्ता के ब्राउज़र से जावा एप्लिकेशन कंटेनर में एक फ़ाइल अपलोड करता है। मैं जो करना चाहता हूं वह यह है: अपलोडिंग पूर्ण हो जाने के बाद, मैं मेजबान नाम (यानी स्थानीयहोस्ट), बंदरगाह (यानी 8080) और वह स्थान जहां मैं चाहता हूं, द्वारा पहचाने गए वेबडावी सर्वर पर फ़ाइल "भेजना" चाहता हूं। फ़ाइल को स्टोर करने के लिए (यानी dir1/dir2)।जावा: सर्वलेट से WebDAV सर्वर पर फ़ाइल कैसे अपलोड करें?

जो मैं बाद में हूं वह मूल रूप से एक वेबडीवी क्लाइंट फ्रेमवर्क है जो मुझे वेबडावी में एक फ़ाइल अपलोड करने में सक्षम बनाता है। मेरे आवेदन में मैं पहले से ही "webdavclient4j" का उपयोग कर रहा हूं, लेकिन मुझे इसके साथ फ़ाइल अपलोड करने का कोई तरीका नहीं दिख रहा है?

कोई विचार? किसी भी मदद के लिए अग्रिम धन्यवाद।

एफ

उत्तर

12

आप कोड के केवल कुछ लाइनों का उपयोग कर के साथ यह कर सकते हैं मेरी हाल ही में जारी और उपयोग करने के लिए सुपर आसान जावा, सरडीन के लिए आधुनिक वेबडाव क्लाइंट। यहाँ (पहले एक आम-कब का उपयोग करता है फ़ाइल को पढ़ने के लिए) कुछ उदाहरण है:

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

चियर्स,

जॉन

+0

हाय जॉन, आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने सरडीन की कोशिश की और मेरे अनुप्रयोगों में इसका इस्तेमाल करने का फैसला किया। चीजें बहुत आसान बनाता है। एफ – francescoNemesi

+0

मैंने भी सरडीन को लागू किया। एक webservice बनाने के लिए आश्चर्यजनक रूप से सरल - अब मुझे इसे सभी परीक्षण करना होगा;) –

+0

@ जोन: क्या कोई निर्देशिका सीधे अपलोड करने का कोई तरीका है? और यदि वेबसर्वर पर कोई निर्देशिका मौजूद है, तो क्या यह सिर्फ फाइलों को ओवरराइट करेगा? – rkg

6

आप Jackrabbit WebDAV Library उपयोग कर सकते हैं।

WebDAV सर्वर पर सामग्री अपलोड करने के लिए एक WebDAV ग्राहक का एक उदाहरण (here से लिया गया):

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 
} 
+0

मैंने आपके द्वारा पोस्ट किए गए कोड को प्राप्त करने का प्रयास किया और कोशिश की। इसने टोमकैट के साथ दुःख का कोई अंत नहीं किया। हमारा वेबडीवी सर्वर जैकब्रिबिट पर आधारित है, इसलिए मैं वास्तव में काम करना चाहता था। –

+0

धन्यवाद! इससे मुझे ओरेकल वेबडैव सर्वर (सरडीन के विपरीत) में मदद मिली। –

संबंधित मुद्दे