2012-05-23 22 views
7

Muszę przesłać obrazy i pliki tekstowe z mojej aplikacji na serwer zdalny (tylko http bez ftp) używając java. Moja aplikacja jest w frameworku jsf. Szukałem, ale nie znaleziono żadnych odpowiednich rzeczy. Czy ktoś może mnie prowadzić? Właściwie powinienem przesłać pliki do specjalnego folderu na zdalny serwer. Mam dwie aplikacje ze wspólną ścieżką do przesyłania plików, więc aby uzyskać dostęp do tych plików, I decidec, aby przesłać wspólne pliki (takie jak obrazy i teksty) do trzeciego serwera. Pierwsza aplikacja powinna przesłać pliki na ten zdalny serwer, a druga aplikacja powinna je odczytać. Więc moją ciężką częścią tego rozwiązania jest przesyłanie plików na ten trzeci serwer (w rzeczywistości zdalny serwer) za pomocą http.jak załadować plik na serwer zdalny http za pomocą java?

+0

Każdy, kto sugeruje commons FileUpload wysłać plik jest źle ** **. Zamierzeniem jest * przeanalizowanie * żądania wieloczęściowego/danych formularza po drugiej stronie, a nie * tworzenie i wysyłanie * żądania wieloczęściowego/formularza danych po twojej stronie. – BalusC

+1

MAYBE pytanie powinno zostać wyjaśnione. Nie oczekuj dokładnych odpowiedzi z pytaniem, które jest niewyraźne! –

+0

Mam dwie aplikacje z udostępnioną ścieżką do przesyłania plików, więc aby uzyskać dostęp do tych plików, I decidec, aby przesłać wspólne pliki (takie jak obrazy i teksty) do trzeciego serwera. Pierwsza aplikacja powinna przesłać pliki na ten zdalny serwer, a druga aplikacja powinna je odczytać. Tak więc moją trudną częścią tego rozwiązania jest przesyłanie plików na ten trzeci serwer (w rzeczywistości zdalny serwer) za pomocą http. – zorro6064

Odpowiedz

1

Możesz użyć httpclient.

Wyślij pliki za pomocą testu POST jako metody.

2

Użyj następującego kodu:

 byte[] data = bos.toByteArray();//convert ur file into byte[] 
     HttpClient httpClient = new DefaultHttpClient();//Client 
     HttpPost postRequest = new HttpPost(YOUR_SERVER_URL);//Post Request to specified URL 
     ByteArrayBody bab = new ByteArrayBody(data, "a.txt"); 
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);// Multipart data 
     reqEntity.addPart("uploadingFile", bab); //adding data to request entity 
     postRequest.setEntity(reqEntity);//adding request entity to post request 
     HttpResponse response = httpClient.execute(postRequest); 
+0

gdzie powinienem dodać mój adres URL zdalnego serwera? W twoim kodzie czym jest "a.txt"? Czy możesz mi więcej wytłumaczyć? – zorro6064

+0

dodaj adres url serwera w YOUR_SERVER_URL ... a.txt to plik, który wysłałem 2 serwer –

+0

Użyłem twojego kodu, ale nic się nie poruszyło i żaden wyjątek nie rzuca. Czy możesz mnie prowadzić? Nic nie zmieniłem w powyższym kodzie. Dzięki – zorro6064

6

Aby przesłać plik do określonego folderu, serwer musi obsługiwać API że.

po stronie serwera do odbioru przesłanych plików, można użyć http://commons.apache.org/fileupload/

stronie klienta do wysyłania żądania przesyłania plików, można użyć https://hc.apache.org/httpcomponents-client-ga/index.html

+0

Określony folder na serwerze zdalnym. moja aplikacja działa na moim serwerze, host pliku nie jest tam, gdzie działa moja aplikacja. – zorro6064

+0

Jak już powiedziałem, serwer zdalnego hosta/pliku musi udostępniać interfejs API do określania zdalnego miejsca docelowego podczas przesyłania za pośrednictwem protokołu HTTP – gigadot

-3

zrobić

@Autowired 
ServletContext c; 

lub wziąć obiektowi

byte[] bytes = file.getBytes(); 

String UPLOAD_FOLDEdR=c.getRealPath("/images"); 
Path path = Paths.get(UPLOAD_FOLDEdR +"/"+ file.getOriginalFilename()); 
Files.write(path, bytes); 
System.out.println(path); 
String Pic_Name =file.getOriginalFilename(); 
+1

. Czy możesz edytować odpowiedź, aby miała sens? Obecnie kod jest trudny do odczytania i nie jest jasne, w jaki sposób rozwiązuje to problem. Proszę lepiej wyjaśnij swoją odpowiedź. – melwil

Powiązane problemy