HTTP PUT을 사용하여 IIS 서버의 폴더에 파일을 업로드하는 데 Java 용 데스크톱 응용 프로그램을 쓰고 있습니다.Java에 HTTP put을 사용하여 파일 업로드
URLConnection urlconnection=null;
try{
File file = new File("C:/test.txt");
URL url = new URL("http://192.168.5.27/Test/test.txt");
urlconnection = url.openConnection();
urlconnection.setDoOutput(true);
urlconnection.setDoInput(true);
if (urlconnection instanceof HttpURLConnection) {
try {
((HttpURLConnection)urlconnection).setRequestMethod("PUT");
((HttpURLConnection)urlconnection).setRequestProperty("Content-type", "text/html");
((HttpURLConnection)urlconnection).connect();
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
BufferedOutputStream bos = new BufferedOutputStream(urlconnection
.getOutputStream());
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
file));
int i;
// read byte by byte until end of stream
while ((i = bis.read()) >0) {
bos.write(i);
}
System.out.println(((HttpURLConnection)urlconnection).getResponseMessage());
}
catch(Exception e)
{
e.printStackTrace();
}
try {
InputStream inputStream;
int responseCode=((HttpURLConnection)urlconnection).getResponseCode();
if ((responseCode>= 200) &&(responseCode<=202)) {
inputStream = ((HttpURLConnection)urlconnection).getInputStream();
int j;
while ((j = inputStream.read()) >0) {
System.out.println(j);
}
} else {
inputStream = ((HttpURLConnection)urlconnection).getErrorStream();
}
((HttpURLConnection)urlconnection).disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
이 프로그램은 대상 폴더 (테스트)에 빈 파일을 만듭니다. 내용은 파일에 기록되지 않습니다.
이 프로그램에 어떤 문제가 있습니까?
에있는 동안 조건을 변경해야합니다 0 - 실제로 바이트 받은? – Bozho
내용을 생성하지 않는 쓰기 작업에 대한 나의 첫 번째 접근 방식은 내가 갖고있는 모든 스트림을 플러시하는 것입니다. D 작성한 후 bos.flush()를 시도하십시오. – f1sh