2012-02-06 4 views
1

저는 java를 처음 사용했습니다. 나는 그것에 대해 많이 모른다. 나는 단지 자바를 배우고있다. 웹 응용 프로그램을 개발 중입니다. 나는 옵션 이미지를 가지고있다. 사용자가 클릭하면 서버에서 클라이언트 측으로 이미지를 다운로드 할 수 있어야합니다 (위치 c : //).서버에서 클라이언트로 이미지를 다운로드하는 자바 코드

나는

여기
import java.awt.Image; 
import java.io.BufferedInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 


import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import javax.imageio.ImageIO; 




public class DownloadingImages{ 
    public DownloadingImages() {} 

public void download(String name) throws MalformedURLException, IOException{ 

Image image = null; 
try { 
    //URL url = new URL("file:///E:/myproject/build/web/images/Webcam.jpg"); 

String spath="http://localhost:5051/marketpoint/images/"; 

String cpath="C:\\"; 


spath = spath + name ; 
cpath = cpath + name ; 
System.out.println("FULL path::: "+spath); 



URL url = new URL(spath); 




InputStream in = new BufferedInputStream(url.openStream()); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
byte[] buf = new byte[1024]; 
int n = 0; 
while (-1!=(n=in.read(buf))) 
{ 
    out.write(buf, 0, n); 
} 
out.close(); 
in.close(); 
byte[] response = out.toByteArray(); 
FileOutputStream fos = new FileOutputStream(cpath); 
    fos.write(response); 
    fos.close(); 
} catch (IOException e) { 


} 
} 
} 


Here 
name = name of image thta client wants to download. 

문제는 이미지가 서버 측에 다운로드됩니다입니다이 코드를 :: 구현했습니다. 에서 c : //. 아무도 내가 잘못 가고있는 곳을 말해 줄 수 있니?

내 편집기로 net beans를 사용하고 있으며 서버로 Tomcat을 사용하고 있습니다. 클라이언트와 서버는 모두 포트 번호 5051을 통해 연결됩니다. 클라이언트가 서버에서 다운로드하려는 이미지는 간단한 jpg 이미지입니다. 아무도 내가이 문제에서 벗어날 수 있도록 도와 줄 것입니다.

+0

당신이 그들이 구체적으로 어떤 말을 문제이지만 방치을 언급. 또한 누군가가이 질문에 투표한다고 믿기가 어렵습니다. –

+0

학습 상황 인 경우 숙제로 질문을 태그해야합니다. –

+0

불편을 드려 죄송합니다. 제 문제를 업데이트했습니다. 그리고 문제는 그것이 c : //에서 서버 측에 다운로드되고 클라이언트 측에서가 아니라는 것입니다. – kanchan

답변

0

파일이 C : \로 다운로드되면 FileOutputStream을 열 때 해당 파일이 cpath과 동일합니다. 이것은 name 변수가 빈 문자열로 전달되고 있음을 의미합니다. 일부 로깅 구문을 넣거나 (또는 ​​넷빈 디버거를 사용하여 더 좋게!) 코드가 실행될 때 변수가 보유하고있는 값을 확인하십시오.

편집 : 지금 문제를 이해하고 있다고 생각합니다. 당신은 서블릿 또는 비슷한 것으로 이것을 실행하고 있습니다. 즉, 코드가 클라이언트가 아닌 서버에서 실행 중임을 의미합니다. 클라이언트의 특정 경로에 파일을 다운로드하려면 클라이언트 측에서 실행되는 Applet 또는 비슷한 것을 사용해야합니다. 또는 HTTP 응답으로 파일을 반환 할 수 있으며 사용자의 브라우저는 파일을 저장할 위치를 묻습니다. 이 시점에서 사용자는 브라우저에서 jpg로 이동할 수 있습니다.

귀하의 질문에 답변이없는 경우 유스 케이스에 대해 자세히 설명하고 싶을 수 있습니다.

+0

내 프로그램 이름을 디버깅했습니다. 이미지의 이름이고 올바른 것입니다. 난 그냥 클라이언트 쪽과하지 서버 쪽 다운로드해야합니다. 그게 내가해야 할 일이야? – kanchan

+0

@ user1191852 업데이트 된 응답을 참조하십시오. 나는 당신의 질문을 지금 이해한다고 생각합니다! – Jon7

+0

선생님, 그런 프로그램에 대한 코드를 얻을 수 있습니까? 내 마감 시간은 – kanchan

0

실행중인 코드를 사용해보십시오. 도움이 될 것입니다.

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Authenticator; 
import java.net.PasswordAuthentication; 
import java.net.URL; 

public class SaveImageFromUrl { 

    public static void main(String[] args) throws Exception { 



     String imageUrl = "http://2.bp.blogspot.com/_GHaEnqqbRsE/SVsxi-gdQ2I/AAAAAAAAAAU/NS6MEejoHtE/s320/Gppfront.jpg"; 


     String destinationFile = "D://gpp.jpg"; 

     saveImage(imageUrl, destinationFile); 
    } 

    public static void saveImage(String imageUrl, String destinationFile) throws IOException { 
     URL url = new URL(imageUrl); 
     InputStream is = url.openStream(); 
     OutputStream os = new FileOutputStream(destinationFile); 

     byte[] b = new byte[2048]; 
     int length; 

     while ((length = is.read(b)) != -1) { 
      os.write(b, 0, length); 
     } 

     is.close(); 
     os.close(); 
    } 

} 
0

먼저이 작업 코드를 시도하십시오 :

package com.ashugupt.github.stackover; 

import java.io.BufferedReader; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class URLTest { 

    private static void sendGet() throws Exception { 

    String url = "http://www.uni-koblenz-landau.de/images/starts-c-ko.jpg"; 
    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    // optional default is GET 
    con.setRequestMethod("GET"); 

    //add request header 
    con.setRequestProperty("User-Agent", "Mozilla/5.0"); 

    int responseCode = con.getResponseCode(); 
    System.out.println("\nSending 'GET' request to URL : " + url); 
    System.out.println("Response Code : " + responseCode); 

    InputStream in = con.getInputStream(); 
    OutputStream out = new FileOutputStream("/Users/ravikiran/Desktop/abc.jpg"); 
    try { 
     byte[] bytes = new byte[2048]; 
     int length; 

     while ((length = in.read(bytes)) != -1) { 
     out.write(bytes, 0, length); 
     } 
    } finally { 
     in.close(); 
     out.close(); 
    } 
    } 

    public static void main(String[] args) throws Exception { 
    sendGet(); 
    } 
} 
관련 문제