如何从linux服务器java web应用程序访问本地路径?

时间:2017-12-05 06:16:55

标签: java angularjs spring spring-mvc tomcat

我创建了一个webapplication,在填充目标输入时创建文件夹(例如=> C:\ xxx \ xxx路径)。 当我在我的本地(http:\ localhost:8080)上运行时,它运行得很好。它找到本地Windows路径并创建文件夹。 但现在我想将这个webapp打开给一群人,在内部unix服务器上部署tomcat(http:\ ipnumber \ portnumber)。 问题是当用户用本地目的地填写输入时,程序代码找不到路径或者无法访问本地计算机文件夹结构,它看起来是unix服务器文件夹结构。

我怎样才能做到这一点?我使用angularjs作为前端,使用http.post调用restapi,后端是java。

package com.ama.ist.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.stereotype.Service;
import org.tmatesoft.svn.core.SVNDepth;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNProperties;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.BasicAuthenticationManager;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.wc.SVNCommitClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;

import com.ama.ist.model.Patch;
import com.ama.ist.model.User;

@Service
public class PatchService {

    public String create(Patch patch) {

        String ConstantPath = patch.getDestination();


        File testFile = new File("");
        String currentPath = testFile.getAbsolutePath();
        System.out.println("current path is: " + currentPath);


        System.out.println("ConstantPath => " + ConstantPath);
//      if (!(isValidPath(ConstantPath))) {
//          return "invalid Path";
//      }

        // System.out.println("Valid mi " + isValidPath(ConstantPath));

        String foldername = patch.getWinNum() + " - " + patch.getWinName();
        System.out.println(ConstantPath + foldername);

        File files = new File(ConstantPath + foldername);
        if (files.exists()) {
            return "The Folder is already created in that path";
        }

        File files1 = new File(ConstantPath + foldername + "\\Patch");
        File files2 = new File(ConstantPath + foldername + "\\Backup");
        File files3 = new File(ConstantPath + foldername + "\\Backup\\UAT");
        File files4 = new File(ConstantPath + foldername + "\\Backup\\PROD");

        if (!files.exists()) {
            if (files.mkdirs()) {
                files1.mkdir();
                files2.mkdir();
                files3.mkdir();
                files4.mkdir();

                createReadme(ConstantPath + foldername, patch);

                if (patch.isChecked()) {

                    System.out.println("patch.getDestination => " + patch.getDestination());
                    System.out.println("patch.getDetail => " + patch.getDetail());
                    System.out.println("patch.getSvnPath => " + patch.getSvnPath());
                    System.out.println("patch.getWinName => " + patch.getWinName());
                    System.out.println("patch.getWinNum => " + patch.getWinNum());

                    System.out.println("patch.getUserName => " + patch.getUser().getUserName());
                    System.out.println("patch.getPassword => " + patch.getUser().getPassword());
                    ImportSvn(patch);

                }

                System.out.println("Multiple directories are created!");
                return "Success";
            } else {
                System.out.println("Failed to create multiple directories!");
                return "Unknwon error";
            }
        } else {
            return "File name is already exists";
        }

    }

    public static boolean isValidPath(String path) {
        System.out.println("path => " + path);
        File f = new File(path);

        if (f.isDirectory()) {
            System.out.println("true => ");
            return true;
        } else {
            System.out.println("false => ");
            return false;
        }

    }

    public void createReadme(String path, Patch patch) {

        try {
            ClassLoader classLoader = getClass().getClassLoader();
            File file = new File(classLoader.getResource("Readme.txt").getFile());

            // System.out.println("!!!!!!!!!!" + new java.io.File("").getAbsolutePath());
            // File file = new File("resources/Readme.txt");
            System.out.println(file.getAbsolutePath());

            FileReader reader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(reader);

            String line;
            PrintWriter writer = new PrintWriter(path + "\\Readme.txt", "UTF-8");
            System.out.println(path + "\\Readme.txt");
            while ((line = bufferedReader.readLine()) != null) {

                line = line.replace("#Winnumber", Integer.toString(patch.getWinNum()));
                line = line.replace("#NameSurname", " ");
                line = line.replace("#Type", "Package");
                line = line.replace("#detail", patch.getDetail());


                SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
                String date = sdf.format(new Date());
                line = line.replace("#Date", date);

                line = line.replace("#Desc", patch.getWinName());

                writer.println(line);

                System.out.println(line);
            }
            reader.close();
            writer.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void ImportSvn(Patch patch) {

        String name = patch.getUser().getUserName();
        String password = patch.getUser().getPassword();
        // String filename = patch.getWinName()
        String filename = patch.getWinNum() + " - " + patch.getWinName();
        String url = patch.getSvnPath() + "/" + filename;

        ISVNAuthenticationManager authManager = new BasicAuthenticationManager(name, password);

        SVNCommitClient commitClient = new SVNCommitClient(authManager, SVNWCUtil.createDefaultOptions(true));
        File f = new File(patch.getDestination() + filename);
        try {
            String logMessage = filename;
            commitClient.doImport(f, // File/Directory to be imported
                    SVNURL.parseURIEncoded(url), // location within svn
                    logMessage, // svn comment
                    new SVNProperties(), // svn properties
                    true, // use global ignores
                    false, // ignore unknown node types
                    SVNDepth.INFINITY);
            // SVNClientManager cm =
            // SVNClientManager.newInstance(SVNWCUtil.createDefaultOptions(true),authManager);
            //
            // SVNUpdateClient uc = cm.getUpdateClient();
            // long[] l = uc.doUpdate(new File[]{dstPath},
            // SVNRevision.HEAD,SVNDepth.INFINITY, true,true);
        } catch (SVNException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

这是服务

$scope.Create = function() {
    $scope.obj = [];
    console.log("$scope.svnPath" + $scope.patch.svnPath);
    console.log("$scope.userName" + $scope.patch.user.userName);
    $http({
        method : "POST",
        url : "http://ipnumber:port/patchinit/mk",
        data : $scope.patch
    }).then(function mySuccess(response) {

        console.log("Success!! ");
        $scope.obj = response.data;
        $scope.errorMessage = response.data.errorMessage;
        $scope.errorCode = response.data.errorCode;

    }, function myError(response) {

        //$scope.obj = response.statusText;
        $scope.errorMessage = response.data.errorMessage;
        $scope.errorCode = response.data.errorCode;

    });

}

这是Angularjs方面

Test("Something", p3:50)

1 个答案:

答案 0 :(得分:0)

您可以在Windows上共享该文件夹,并在unix中安装该共享文件夹。安装后,可以使用samba(smb://192.168.1.117/Your_Folder)轻松访问。

Samba几乎是所有Linux发行版的标准配置,并且通常作为基本系统服务包含在其他基于Unix的操作系统中。