【问题标题】:Copying files to folder将文件复制到文件夹
【发布时间】:2017-12-08 02:13:47
【问题描述】:

我有这个:

在 addMusic.jsp 中:

<form method="post" action="Handler" enctype="multipart/form-data">
    <div class="form-group">
        <label>Musica:</label> 
        <input type="text" class="form-control" name="add_musica_nome" placeholder="Nome Musica">
    </div>
    <div class="form-group">
        <label>Localização:</label>
        <input type="file" class="form-control" name="add_musica_path" accept="audio/*">
    </div>
    <div class="form-group">
        <label>Ano:</label>
        <input type="text" class="form-control" name="add_musica_ano" pattern="[0-9]{4,4}">
    </div>
    <div class="form-group">
        <input type="hidden" name="logica" id="logica" value="SMusica"/>
        <input  type="hidden" name="acao" id="acao" value="addMusica"/> 
        <input class="btn btn-success" type="submit" value="Inserir" name="inserir"/>
    </div>
</form>

在处理程序中:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String parametro = request.getParameter("logica"); // Recebe como parametro do jsp, qual a class do service que
                                                        // irá atuar
    String nomeDaClasse = "services." + parametro; // Nome da Classe

    try {
        Class<?> classe = Class.forName(nomeDaClasse);
        Logica logica = (Logica) classe.newInstance();

        String pagina = logica.executa(request, response);
        request.getRequestDispatcher(pagina).forward(request, response);

    } catch (Exception e) {
        throw new ServletException("A lógica causou uma exceção", e);
    }
}

在 SMusica 中:

final String Dest = "/data/";

public void addMusica(String musica_nome, Part musica, String ano) throws IOException {

    String fileName = Paths.get(musica.getSubmittedFileName()).getFileName().toString(); // MSIE fix.

    try {

        File music = new File(fileName);

        System.out.println("Path: " + music.getAbsolutePath());

        if (music.renameTo(new File(Dest + music.getName()))) {
            System.out.println("File is moved successful!");
        } else {
            System.out.println("File is failed to move!");
        }

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

}

@Override
public String executa(HttpServletRequest req, HttpServletResponse res) throws Exception {

    if (req.getParameter("acao").equals("addMusica")) {
        addMusica(req.getParameter("add_musica_nome"), req.getPart("add_musica_path"),
                req.getParameter("add_musica_ano"));
    }
    return "/index.jsp";
}

我打印了音乐(文件)的绝对路径,它返回 C:\Users\Fabio\Desktop\eclipse\ProfJam_-_Mortalhas.mp3,而不是真实路径。

我的问题是如何获取文件的真实路径?

【问题讨论】:

    标签: java file jsp file-upload


    【解决方案1】:

    路径中有一个方法叫

      Path _rp = p.toRealPath();
    

    也许你可以往这个方向搜索

    【讨论】:

    • 我搜索了这个我不知道的方法,我想出了这个来测试: Path p = Paths.get(music.getPath(), music.getName()); System.out.println("路径:" + p);在 try catch 内的相同方法中,它打印:UsersFabioDesktopProfJam_-Mortalhas.mp3\UsersFabioDesktopProfJam-_Mortalhas.mp3
    • 但是如果你的文件的路径是什么,绝对数学不正确?
    • 如果你想复制文件,你应该像这样使用文件类:Files.copy(source,dest)
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 2014-12-03
    • 2012-01-14
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多