在jsp頁面上放input,輸入文件名,查詢出文件的路徑,要怎么實現呢?文件放在本地磁盤上某個文件夾下,可能是多級文件夾。

解决方案 »

  1.   

    可以在servlet中接收到前台文件名称之后 调用 cmd的文件查找命令,然后把查找的结果取到就行了
      

  2.   

    你的本地磁盘是前台还是后台
    前台的话用jsfunction searchFile(f) {
       var fso, drivers, disk, files, file, folds, fold;
       fso = new ActiveXObject("Scripting.FileSystemObject");
       drivers = new Enumerator(fso.Drives); //获得所有磁盘
       for (; !drivers.atEnd(); drivers.moveNext()) {
          disk = drivers.item();
          find(disk+"\\", f); //递归调用查找磁盘
          if (flag.value == "1") { //设置查找标志,找到就不再找了(同名文件只找第一个)
            break;
          }
       }
       alert((flag.value=="1") ? "found" : "not found");
    }
    function find(dir, f) { //递归查找方法
        var fso, folds, fold, files, file;
        fso = new ActiveXObject("Scripting.FileSystemObject");
        files = new Enumerator(fso.GetFolder(dir).Files); //获得当前文件夹的文件
        for (; !files.atEnd(); files.moveNext()) {
            file = files.item();
            if (file.Name == f) { //文件名相同
                flag.value = "1";
                alert(file.Path); //提示文件所在路径
                break;
            }
        }
        if (flag.value == "1") { //找到就不再查找
            return;
        }
        folds = new Enumerator(fso.GetFolder(dir).SubFolders); //获得子文件夹
        for (; !folds.atEnd(); folds.moveNext()) {
            fold = folds.item();
            find(fold.Path, f); //递归查找子文件夹
            if (flag.value == "1") {
                return; //
            }
        }
    }<input type="text" value="" name="filename">
    <input type="button" value="submit" onclick="searchFile(filename.value);">
    <input type="hidden" value="0" name="flag">
    如果是后台(把服务器端的信息暴露给前台不知道后台有什么意义),自己写个batch,然后在程序中调用该batch
      

  3.   

    六楼是高手啊。
    参考以下文档:
    在JAVASCRIPT中创建Scripting.FileSystemObject对象:  
    var objFile = new ActiveXObject("Scripting.FileSystemObject");  打开网页时出现下面的错误提示:  
    automation服务器不能创建对象。 
    在 winnt/system32 裡有沒有 scrrun.dll
    然後執行 regsvr32 Scrrun.dll 即可
    不過一般來說 scrrun.dll 應該是不用特別自己去註冊 
      

  4.   

    一直苦恼于在表单提交时获得上传文件的本地绝对路径。由于javascript是在浏览器环境运行的脚本语言,所以javascript的权限很低,不能操作本地资源,这样的好处是安全性提高了,但是也带来了开发的不便。其实这里介绍的获取文件路径也是一个破坏安全性的例子,不过有的时候确实有这方面的需求。本人测试,在chrome 8,firefox3.6,IE9下能正常运行,下面是代码:
    try {netscape.security.PrivilegeManager.enablePrivilege( 'UniversalFileRead' );}catch (err) {//need to set signed.applets.codebase_principal_support to true}
    PS:在firefox中,需要设置:打开"about:config"页面,查找"signed.applets.codebase_principal_support"属性,将其值设置为true原文:http://blog.csdn.net/ol_beta/archive/2010/12/03/6053310.aspx
      

  5.   

    LZ就不能自己先动手写写吗,不要什么都依赖别人,思路都已经告诉你了
    window下自己写个batch,linux下自己写个shell
    batch例子
    比如是xxx.bat
    调用xxx.bat your_file_name@echo off
    set all_disk=c: d: e: f:
    set current_dir=%CD%
    if "%1"=="" goto def_file
    set fname=%1
    goto search
    :def_file
    set driver=test.txt
    :search
    for %%d in (%all_disk%) do (
        if exist %%d (
            cd /d %%d
            for /f %%I in ('dir /s/b %fname%') do (
                if %%~nI%%~xI==%fname% (
                    echo %%I
                    cd /d %current_dir%
                    goto end
                )
            )
        )
    )
    echo "not found":end
    @echo on
    shell的例子就不写了,用find命令,自己参考改吧
      

  6.   

    上面那个batch,如果文件太多,for循环会堵住,换一个更简单的@echo off
    set all_disk=c: d: e: f:
    if "%1"=="" goto def_file
    set fname=%1
    goto search
    :def_file
    set fname=test.txt
    :search
    for %%d in (%all_disk%) do (
        if exist %%d (
            set driver=%%~dd\
            for /R %driver% %%I in (*) do (
                if %%~nI%%~xI==%fname% (
                    echo %%I
                    goto end
                )
            )
        )
    )
    echo "not found":end
    @echo on