0

これは、FTPを使用してAndroidで画像をアップロードするための高速で効率的な方法です.ここで、画像のフォルダの名前を変更するファイルを作成できます。コードを投稿してください.SFTPコード:

f.setHost("host");
f.setUser("user");
f.setPassword("pwd");
boolean connected=f.connect();
f.setRemoteFile("server directory");
if(connected){
  f.uploadFile("local file);
} 

FTP 553 エラーの取得

4

2 に答える 2

0

以下のコードでは、セッションを作成できますが、コードでエラーが発生します

I am getting null pointer exception here.


public void uploaddata() throws IOException, SftpException

{
    File uploadFilePath;
    Session session ;
     Channel channel = null;
    ChannelSftp sftp = null;

    uploadFilePath = searchForFileInExternalStorage("video.3gp");  

   /* uploadFilePath=new File(Environment.getExternalStorageDirectory()
                                                     +"/video.3gp");*/
    Log.e("image file path are", uploadFilePath.getPath()+"name"+uploadFilePath.getName()+"length is"+uploadFilePath.length());

    byte[] bufr = new byte[(int) uploadFilePath.length()];
    FileInputStream fis = new FileInputStream(uploadFilePath);
    fis.read(bufr);
    JSch ssh = new JSch();
   try {
        session =ssh.getSession(username, hostName);
        System.out.println("JSch JSch JSch Session created.");
        session.setPassword(password);
        java.util.Properties config = new java.util.Properties(); 
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        System.out.println("JSch JSch Session connected.");
        System.out.println("Opening Channel.");
        channel = session.openChannel("sftp"); 
        channel.connect();
        sftp= (ChannelSftp)channel;

        Log.e("chanel is",""+channel+"sftp"+sftp);

            // server path where you want to upload file
        sftp.cd(location); 
    }
    catch(Exception e){

    }
   ByteArrayInputStream in = new ByteArrayInputStream(bufr);
   sftp.put(in, uploadFilePath.getName(), null);
in.close();

if (sftp.getExitStatus()==-1) {
    System.out.println("file uploaded");
    Log.v("upload result", "succeeded");                                    
    } else {
    Log.v("upload faild ", "faild");        
    }

以下の行は、エラー sftp.put(in, uploadFilePath.getName(), null); を生成しています。

于 2013-03-19T07:28:24.107 に答える
0

JSch libを使用してサーバーにファイルをアップロードするようにコードを変更します

    private File uploadFilePath;
    Session session ;
     Channel channel = null;
    ChannelSftp sftp;
    uploadFilePath=new File(Environment.getExternalStorageDirectory()
                                                     +"/temp.jpg");
    byte[] bufr = new byte[(int) uploadFilePath.length()];
    FileInputStream fis = new FileInputStream(uploadFilePath);
    fis.read(bufr);
    JSch ssh = new JSch();
   try {
        session =ssh.getSession("root", "xx.xxx.xxx.xx");
        System.out.println("JSch JSch JSch Session created.");
        session.setPassword("password");
        java.util.Properties config = new java.util.Properties(); 
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        System.out.println("JSch JSch Session connected.");
        System.out.println("Opening Channel.");
        channel = session.openChannel("sftp"); 
        channel.connect();
        sftp= (ChannelSftp)channel;
            // server path where you want to upload file
        sftp.cd("/root/temp/dir/upload/"); 
    }
    catch(Exception e){

    }
ByteArrayInputStream in = new ByteArrayInputStream(bufr);
sftp.put(in, uploadFilePath.getName(), null);
in.close();

if (sftp.getExitStatus()==-1) {
    System.out.println("file uploaded");
    Log.v("upload result", "succeeded");                                    
    } else {
    Log.v("upload faild ", "faild");        
    }
于 2012-11-29T10:40:13.777 に答える