不知道你说的本地路是服务器上的还是客户上的不过都可以获得 有点乱,自己整理了。呵呵。
<%//上传文件 需要 common-fileupload 组件/String up = requestgetParameter(up);
if(up!=null&&upequals(true)){try{String temp = c:\\; //临时目录
String strUp = requestgetParameter(path); //上传目标地址
if(strUp!=null&&!strUpequals()){
strUp = new String(strUpgetBytes(ISO-8859-1), GB2312);}DiskFileUpload fu = new DiskFileUpload();
fusetSizeMax(102410241024); // 设置允许用户上传文件大小,单位:字节
fusetSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:字节
fusetRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
//开始读取上传信息
List fileItems = fuparseRequest(request);
Iterator iter = fileItemsiterator(); // 依次处理每个上传的文件
while(iterhasNext()) {
FileItem item = (FileItem) iternext();// 忽略其他不是文件域的所有表单信息
if(!itemisFormField()){
String name = itemgetName(); //获取上传文件名,包括路径
name = namesubstring(namelastIndexOf(\\)+1);//从全路径中提取文件名
long size = itemgetSize();
if((name==null||nameequals()) && size==0)continue;Systemoutprintln(userIp+:上传文件:+name+到+strUp);//输出上传文件信息
File fNew= new File(strUp, name);
itemwrite(fNew);
message = message + <font color=blue文件 <b+itemgetName()+</b 上传成功!</font;}}}catch(Exception ex){
message = message + <font color=red文件上传失败!</font;}}/%
js给action传真实地址的时候,处于安全,传到action中浏览器会改变路径变为C:\fakepath\ftptxt,但是原始路径却是C:\Documents and Settings\Administrator\桌面\ftptxt下面就是获得原始路径的方法var url = getPath(documentgetElementByIdx_x("url"))function getPath(obj) { if (obj) { if (windownavigatoruserAgentindexOf("MSIE") >= 1) { objselect(); return documentselectioncreateRange()text; } else if (windownavigatoruserAgentindexOf("Firefox") >= 1) { if (objfiles) { return objfilesitem(0)getAsDataURL(); } return objvalue; } return objvalue; }}
c#的web上本身有个FileUpload控件,通过它就可以取到文件名和文件大小
FileUpload1FileName;//获取文件名
FileUpload1PostedFileFileName; //获取完整客户端文件路径
FileUpload1PostedFileContentType;//上传文件类型
FileUpload1PostedFileContentLengthToString();//上传文件大小
你要是想要部分的文件夹目录名称,可以使用openFileDialog来取得本地上传的路径
string resultfile = openFileDialog1FileName;
结果是resultfile="E:\\working space\\单独例子\\datagridview 显示excel\\WindowsFormsApplication1\\WindowsFormsApplication1\\bin\\Debug\\data\\Samplexls"
截取resultfile的部分文件夹目录和文件名
然后把需要截取的部分文件夹和文件名组合成上传的文件路径。
thisFileUpload1PostedFileFileName获取得到文件的物理位置;thisFileUpload1FileName得到的只是文件名;可以把这个存入数据库
可以使用commons-fileupload组件实现文件上传,步骤如下:
1、添加jar包:commons-fileupload-xxxjar和commons-io-24jar
2、编写或修改form表单
1) 提交方式必须是post
2) 为表单增加属性enctype="multipart/form-data"
3) 为文件上传单独提供servlet,因为增加enctype属性后,无法使用常规的请求对象来获取提交的数据
3、使用Commons-FileUpload组件实现文件的上传
1) 确定本次请求是否是文件上传请求
boolean flag=ServletFileUploadisMultipartContent(request);
2) 创建文件上传的工厂对象
FileItemFactory factory=new DiskFileItemFactory();
3) 创建ServletFileUpload对象,并将工厂对象作为参数传入
ServletFileUpload upload=new ServletFileUpload(factory);
4) 使用上传对象从请求对象中解析出提交的所有表单元素
List<FileItem> lstForms=uploadparseRequest(request);
5) 遍历表单元素集合,实现取出表单元素和上传文件
//遍历所有表单元素
for (FileItem fileItem : lstForms) {
//判断每一个表单元素是否是普通表单
if(fileItemisFormField()){
Systemoutprintln(fileItemgetString("UTF-8"));
}else{
//上传前准备工作
//a、上传后的路径thisgetServletContext()getRealPath("/")会出去当前项目在 部署的服务器上的绝对路径
String path=thisgetServletContext()getRealPath("/")+"files/";
//b、找出要上传的文件的名字
String fileName=fileItemgetName();
fileName=fileNamesubstring(fileNamelastIndexOf("\\")+1);
//c、上传
fileItemwrite(new File(path+fileName));
outprintln("<h2>"+fileName+"上传成功!</h2>");
string a = FileUpload1FileName;
string a1 = aSubstring(aLastIndexOf(""), aLength - aLastIndexOf(""));
ResponseWrite(a1);
以上就是关于如何获取表单中file文件域中的路径及文件名全部的内容,包括:如何获取表单中file文件域中的路径及文件名、在.net里为什么js获取到的FileUpload的绝对路径是C:\fakepath\ 无论怎么取都是C:\fakepath\+文件名、C#写的web程序怎么获取本地文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)