JFinal 怎么在getFile前获取必须的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFinal 怎么在getFile前获取必须的属性相关的知识,希望对你有一定的参考价值。
通常,文件、文件夹的时间属性指的是创建时间、最近访问时间和最近修改时间等几个具体属性。对于文件的上述属性可以通过GetFileTime()来获取,对于文件夹,在通过CreateFile()函数将其打开后,其获取得到的句柄可以当作文件句柄来使用。因此,通过GetFileTime()函数同样也可以得到文件夹的时间属性。GetFileTime()函数原型如下:BOOLGetFileTime(
HANDLE hFile, // 文件句柄
LPFILETIME lpCreationTime, // 创建时间的地址
LPFILETIME lpLastAccessTime, //最近访问时间的地址
LPFILETIME lpLastWriteTime // 最近修改时间的地址
);
其中后三个参数均是指向FILETIME结构的指针,得到的也都是UTC时间,如果需要,可以通过FileTimeToLocalFileTime()函数将此UTC时间转化成本地时间。而且还可以进一步通过FileTimeToSystemTime()函数将其从文件时间格式转化成系统时间格式,转化后的时间格式将保存在一个SYSTEMTIME结构对象中。类似的,在将时间信息写入到文件夹属性时,如果不是文件时间格式也应当通过SystemTimeToFileTime()函数将其从系统时间格式转换成文件时间格式,然后再通过SetFileTime()函数将指定的时间写入到文件夹的时间属性中去。这样,在进行数据备份和恢复的过程中,包括根目录在内的所有文件夹都可以保持时间属性的一致。
// 获取指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,
//stime为一指向SYSTEMTIME结构的指针
BOOLCSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime)
// 打开文件夹
HANDLE hDir = CreateFile (DirName,GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夹的创建时间
FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
FILETIME lpLastWriteTime; // 文件夹的最近修改时间
// 获取文件夹时间属性信息
if (GetFileTime(hDir,&lpCreationTime, &lpLastAccessTime, &lpLastWriteTime))
FILETIME ftime;
FileTimeToLocalFileTime(&lpLastWriteTime,&ftime); // 转换成本地时间
FileTimeToSystemTime(&ftime,&stime); // 转换成系统时间格式
CloseHandle(hDir); // 关闭打开过的文件夹
return retval;
// 设置指定文件夹的时间属性,入口参数DirName指定了待处理的文件夹,
//new_time为一指向SYSTEMTIME结构的指针
BOOLCSetForderTimeDlg::SetDirTime(CString DirName, SYSTEMTIME new_stime)
// 打开目录的Win32 API调用
HANDLE hDir = CreateFile(DirName,GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夹的创建时间
FILETIME lpLastAccessTime; // 对文件夹的最近访问时间
FILETIME lpLastWriteTime; // 对文件夹的最近修改时间
SystemTimeToFileTime(&new_stime,&lpCreationTime); // 转换成文件时间格式
SystemTimeToFileTime(&new_stime,&lpLastAccessTime);
SystemTimeToFileTime(&new_stime,&lpLastWriteTime);
CloseHandle(hDir); // 关闭文件夹
return retval;
参考技术A 没错 urlPara 传递参数是不受限制的,即便不用 urlPara 传参,也可以通过先用 getFile()先得到
UploadFile然后再通过 getPara() 得到需要的参数,再将
UploadFile.getFile().renameTo(newFile); 改一下 file 的路径即可,只是稍微有点绕
大家畅所欲言,当jFinal遇到XSS和SQL注入怎么处理
参考技术A 数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的<c:out>标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function ()
return this.replace(/&/g, ‘&’).replace(/>/g, ‘>’).replace(/</g, ‘<’).replace(/”/g, ‘"’);
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() super();
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL)
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;
@Override
public void setAsText(String text)
if (text == null)
setValue(null);本回答被提问者和网友采纳 参考技术B 本来没错,可现在不这样认为,你爱的那个人也爱你才全对,你爱他,他不爱你没用
以上是关于JFinal 怎么在getFile前获取必须的属性的主要内容,如果未能解决你的问题,请参考以下文章
Jfinal文件上传基础路径问题,windows下会以项目根路径为基础路径
jfinal操作数据库使用findById方法时,表的主键字段必须是id么
c#如何获取某目录下的几种格式的图片文件。Directory.GetFiles