100分求浏览文件夹的代码 做一项目,在WEB页面中要用到浏览文件夹。Windows自带的那种树形目录的。想了想,应该是JavaScript写的。网上找不到合适的。不是浏览文件,是文件夹。有什么解决方法或者代码都行。有现成的最好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 浏览器有个权限问题,所以问题比较难解决。除非浏览器的漏洞没有补上,还有得一试,应该是用到new ActiveXObject("Scripting.FileSystemObject"); g_fSelectFolderDlg(CString* lpstrFolder,CString strIniFolder,bool bAvailNewFolder) { bool ret; char lpszPath[MAX_PATH]; LPMALLOC lpMalloc; BROWSEINFO sInfo; LPITEMIDLIST lpidlRoot; LPITEMIDLIST lpidlBrowse; if(lpstrFolder == NULL) return false; if(::SHGetMalloc(&lpMalloc) != NOERROR) return false; ret = false; if(strIniFolder != "") { if(strIniFolder.Right(1) == "\\") strIniFolder = strIniFolder.Left(strIniFolder.GetLength() - 1); //删除末尾的"\\" } ::SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &lpidlRoot); //取得选定的文件夹名 ::ZeroMemory(&sInfo, sizeof(BROWSEINFO)); sInfo.pidlRoot = lpidlRoot; sInfo.pszDisplayName = lpszPath; sInfo.lpszTitle = _T("选择文件夹"); sInfo.ulFlags = BIF_RETURNONLYFSDIRS; if(bAvailNewFolder == true) sInfo.ulFlags |= BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_USENEWUI; sInfo.lpfn = NULL; sInfo.lParam = (LPARAM)strIniFolder.GetBuffer(0); lpidlBrowse = ::SHBrowseForFolder(&sInfo); //显示文件夹选择对话框 if(lpidlBrowse != NULL) { if(::SHGetPathFromIDList(lpidlBrowse,lpszPath)) //取得文件夹名 { *lpstrFolder = ""; *lpstrFolder = lpszPath; if(*lpstrFolder != "") { if(lpstrFolder->Right(1) != "\\") *lpstrFolder = "\\"; //在末尾时附加"\\" } } ret = true; } if(lpidlBrowse != NULL) ::CoTaskMemFree(lpidlBrowse); if(lpidlRoot != NULL) ::CoTaskMemFree(lpidlRoot); lpMalloc->Release(); return ret; } 楼上的是C++?实现起来一点也不难, 但你要搞清楚只有服务端脚本才能干.思路就是遍历当前目录的所有子文件夹, 并适当转换路径为链接, 比如这样 xxx.xx?path=/folder/...然后再判断 path 是否为空, 如果非空就把 path 进行换行, 干这些需要涉及到安全问题, ...如果技术含量不够那还是不要弄好了. 楼上的能不能给代码btbtd 关于ajax的问题 如何让一组checkbox的每个选择框都失去焦点时执行事件 想要鼠标点击a或b或c..中的一个元素,然后top元素就移动到这个点过的元素周边怎么写呢? jquery选取table单元格 javascript求助 动态增加javascript脚本的问题 请BlueDestiny帮下忙,有关Js兼容性的问题,谢谢 XP风格的CSS样式 各位大虾帮忙完善一下这个订单 请问有谁知道怎样来控制IE 里面的Internet选项里面的,高级,选种打印背景和图片!! 请大家过来看看 如何用cookie控制页面的样式
{
bool ret;
char lpszPath[MAX_PATH];
LPMALLOC lpMalloc;
BROWSEINFO sInfo;
LPITEMIDLIST lpidlRoot;
LPITEMIDLIST lpidlBrowse; if(lpstrFolder == NULL)
return false; if(::SHGetMalloc(&lpMalloc) != NOERROR)
return false; ret = false; if(strIniFolder != "")
{
if(strIniFolder.Right(1) == "\\")
strIniFolder = strIniFolder.Left(strIniFolder.GetLength() - 1); //删除末尾的"\\" } ::SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &lpidlRoot); //取得选定的文件夹名
::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
sInfo.pidlRoot = lpidlRoot;
sInfo.pszDisplayName = lpszPath;
sInfo.lpszTitle = _T("选择文件夹");
sInfo.ulFlags = BIF_RETURNONLYFSDIRS;
if(bAvailNewFolder == true)
sInfo.ulFlags |= BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_USENEWUI;
sInfo.lpfn = NULL;
sInfo.lParam = (LPARAM)strIniFolder.GetBuffer(0); lpidlBrowse = ::SHBrowseForFolder(&sInfo); //显示文件夹选择对话框 if(lpidlBrowse != NULL)
{
if(::SHGetPathFromIDList(lpidlBrowse,lpszPath)) //取得文件夹名
{
*lpstrFolder = "";
*lpstrFolder = lpszPath; if(*lpstrFolder != "")
{
if(lpstrFolder->Right(1) != "\\")
*lpstrFolder = "\\"; //在末尾时附加"\\"
}
} ret = true;
} if(lpidlBrowse != NULL)
::CoTaskMemFree(lpidlBrowse);
if(lpidlRoot != NULL)
::CoTaskMemFree(lpidlRoot); lpMalloc->Release(); return ret;
}
思路就是遍历当前目录的所有子文件夹, 并适当转换路径为链接, 比如这样 xxx.xx?path=/folder/...然后再判断 path 是否为空, 如果非空就把 path 进行换行,
干这些需要涉及到安全问题, ...如果技术含量不够那还是不要弄好了.
btbtd