如何获取表单中file文件域中的路径及文件名

如何获取表单中file文件域中的路径及文件名,第1张

不知道你说的本地路是服务器上的还是客户上的不过都可以获得 有点乱,自己整理了。呵呵。

<%//上传文件 需要 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文件&nbsp;<b+itemgetName()+</b&nbsp;上传成功!</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程序怎么获取本地文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9458998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存