如何在我的应用程序中将图像文件发送到NAS服务器?

问题描述 投票:1回答:1

我想使用NAS server将图像文件(jpg,png)发送到java中的smb

我添加了jcifs-1.3.19.jar。正如提到的herehere

编辑:我已成功使用此代码将jpeg图像发送到服务器上的共享文件夹,但速度非常慢,其发送速度接近1kb /秒。任何解决方案

    static final String USER_NAME = "Waqas";
    static final String PASSWORD = "mypass";
    static final String NETWORK_FOLDER = "smb://DESKTOP-LAP/Users/Waqas/";

      public boolean copyFiles(FileInputStream file, String fileName) {
        boolean successful = false;
        int cursor;
        SmbFileOutputStream sfos;
        SmbFile sFile;
        String path;
        NtlmPasswordAuthentication auth;
        try{
            String user = USER_NAME + ":" + PASSWORD;    
             auth = new NtlmPasswordAuthentication(user);
            StrictMode.ThreadPolicy tp = StrictMode.ThreadPolicy.LAX; StrictMode.setThreadPolicy(tp);
             path = NETWORK_FOLDER + fileName;    
             sFile = new SmbFile(path, auth);
             sfos = new SmbFileOutputStream(sFile);

            while((cursor = file.read())!=-1){
                sfos.write(cursor);
            }
            successful = true;
            System.out.println("Successful " + successful);
        }

        catch (Exception e) {
            successful = false;
            e.printStackTrace();
        }
        return successful;
    }
java android fileoutputstream smb nas
1个回答
0
投票

最后这是解决方案:

  public boolean copyFiles(FileInputStream file, String fileName) {
            boolean successful = false;
            int cursor;
            SmbFileOutputStream sfos;
            SmbFile sFile;
            String path;
            NtlmPasswordAuthentication auth;
            try{
                String user = USER_NAME + ":" + PASSWORD;
                System.out.println("User: " + user);

                 auth = new NtlmPasswordAuthentication(user);
                StrictMode.ThreadPolicy tp = StrictMode.ThreadPolicy.LAX; StrictMode.setThreadPolicy(tp);

                 path = NETWORK_FOLDER + fileName+".jpeg";
                System.out.println("Path: " +path);

                 sFile = new SmbFile(path, auth);
                 sfos = new SmbFileOutputStream(sFile);

                long t0 = System.currentTimeMillis();

                byte[] b = new byte[8192];
                int n, tot = 0;
                Log.d("asdf","initiating : total="+tot);


                while((n = file.read(b))>0){
                    sfos.write( b, 0, n );
                    tot += n;
                    Log.d("asdf","writing : total="+tot);
                }
                successful = true;
                Log.d("asdf","Successful : total="+tot);

            }

            catch (Exception e) {
                successful = false;
                e.printStackTrace();
                Log.d("asdf","exxeption ");

            }
            return successful;
        }
© www.soinside.com 2019 - 2024. All rights reserved.