Probemer med upload af filer til ftp server
Jeg har et styk kode som uploder jpg-filer til en FTP server.Sådan som det er nu, fungerer det fint. Men en gang imellem oplever jeg at applikation stopper midt i processen og ’hænger’. Og det er tit hvis der er flere end 50 filer, der skal uploades. Ftp serveren er hos udbyder og jeg ved at der er åbent for 50 forbindelser. Det tyder på at der laves flere end 50 forbindelser i for-løkken. Det vil jeg gerne undgå, derfor har jeg sidst i løkken denne linie: client.disconnect();
Men det fungerer vist ikke.
Hvis jeg vælger at sætte: client.disconnect(); efter for-løkke, så får jeg NullPointerException I linjen: os.write(b,0,n);
Jeg bruger ’org.apache.commons.net.ftp.FTPClient’ og klassen extends Thread.
Er der nogen, der kan hjælpe?
Her er koden på for-løkken:
….
for(int j = 0; j < filenames.length; j++ ) {
if(!client.isConnected()){
client.connect(ftp_server_adress);
client.login(ftp_server_username, ftp_server_password);
}
System.out.print(client.getReplyString());
filename = filenames[j];
// System.out.println(j+" conect");
if(j == 0){
switch(choise){
case 0: // yes
cancel = false;
break;
case 1: // no
cancel = true;
btn_exit.setEnabled(true);
btn_select.setEnabled(true);
btn_upload.setEnabled(true);
break;
case 2: //cancel
cancel = true;
btn_exit.setEnabled(true);
btn_select.setEnabled(true);
btn_upload.setEnabled(true);
break;
}
}
if(!cancel){
// Bruges kun for at overføre filens navn
URL url = new URL(UPLOAD_URL + "?filename=" + URLEncoder.encode(filename, "ISO8859-1") + "&orderOwner=" + URLEncoder.encode(mf.arg_owner, "ISO8859-1") + "&orderNummber=" + URLEncoder.encode(mf.arg_nommber, "ISO8859-1")+ "&orderSystem=" + URLEncoder.encode(mf.arg_system, "ISO8859-1"));
HttpURLConnection httpcon = (HttpURLConnection)url.openConnection();
httpcon.connect();
if(httpcon.getResponseCode() == HttpURLConnection.HTTP_OK) {
System.out.println("HttpURLConnection.HTTP_OK er OK.");
}
httpcon.disconnect();
if(j == 0){
stMessage.setForeground(new Color(255, 51, 51));
stMessage.setText("Vent venligst, upload er i gang . . . ");
files.setText("");
}
InputStream is = new FileInputStream(abs_path + File.separator + filename);
client.setFileType(FTPClient.BINARY_FILE_TYPE);
try {
OutputStream os = client.storeFileStream(UPLOAD_DIR+filename);
byte[] b = new byte[10000];
int n = 0;
while((n = is.read(b)) >= 0) {
os.write(b,0,n);
STATUS_SUM += n;
pbar.setValue(STATUS_SUM);
}
os.close();
} catch (IOException ex) {
ex.printStackTrace();
}
is.close();
System.out.println(abs_path + File.separator + filename);
files.setForeground(Color.GREEN);
files.append("Uploadning af filen "+ filename +" er færdig." + "\n");
if(j == filenames.length-1){
stMessage.setText("Uploadning er færdig.");
stMessage.setForeground(new Color(0, 153, 51));
}
}
client.disconnect();
}
….