java后台怎么获取plupload上传的文件信息

java后台怎么获取plupload上传的文件信息,第1张

上传前你要往用户的cookie里放个标识,接收到上传文件后,也就是第一个请求,里面有文件名什么的基本信息,其中有个参数会告诉你一共有几个包,然后你把后续收到的该用户标识的几个包合并,还原成第一个包收到的文件名,这时候分片上传结束。

public String getName()

返回由此抽象路径名表示的文件或目录的名称。该名称是路径名名称序列中的最后一个名称。如果路径名名称序列为空,则返回空字符串。

返回:

此抽象路径名表示的文件或目录的名称;如果路径名的名称序列为空,则返回空字符串

如果通过servelet来读取上传文件路径,则代码如下,我已经在项目中用过了:

DiskFileItemFactory difif = new DiskFileItemFactory();

dififsetSizeThreshold(321024);dififsetRepository(new File(tmpDir));        //

用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(difif);

sfusetSizeMax(MAX_SIZE);

List fileList = sfuparseRequest(request);

if ( fileList == null || fileListsize() == 0) {                throw new Exception("

导入文件不存在,请检

查");} else {                File upLoadFile = null;                Iterator fileIterator = fileListiterator();

//得到所有上传的文

件                while (fileIteratorhasNext()) {                    FileItem fileItem = (FileItem)fileIteratornext();                    //

取得上传文件

名                    if (fileItemgetContentType() == null) {                    } else {

                        //

此为路

径                        String path = fileItemgetName();                        String t_ext = pathsubstring(pathlastIndexOf("") + 1);                                                //

根据系统时间生成上传后保存的文件

名                        String prefix = StringvalueOf(SystemcurrentTimeMillis());                        //

保存最终的文件完整路径,保存在工程根目录下的Upload目录

下                        String u_name = tmpDir + Fileseparator + prefix + "" + t_ext;                                                //

开始保存文

件                        upLoadFile = new File(u_name);                        fileItemwrite(upLoadFile);                    }                }            }

可以使用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>");

后台获取到文件了么FilegetName就是文件名了

这个方法就是保存文件用的了 调用saveFile(filegetInputStrean,filegetName);

private void saveFile(InputStream inputStream, String fileName) {

        OutputStream os = null;        try {

            String path = "D:\\testFile\\";            // 2、保存到临时文件            // 1K的数据缓冲

            byte[] bs = new byte[1024];            // 读取到的数据长度

            int len;            // 输出的文件流保存到本地文件

            File tempFile = new File(path);            if (!tempFileexists()) {

                tempFilemkdirs();

            }

            os = new FileOutputStream(tempFilegetPath() + Fileseparator + fileName);            // 开始读取

            while ((len = inputStreamread(bs)) != -1) {

                oswrite(bs, 0, len);

            }

        } catch (IOException e) {

            eprintStackTrace();

        } catch (Exception e) {

            eprintStackTrace();

        } finally {            // 完毕,关闭所有链接

            try {

                osclose();

                inputStreamclose();

            } catch (IOException e) {

                eprintStackTrace();

            }

        }

    }

这个你可以这样实现,你在页面写一个<input type="hidden" name="files" id="files">,然后在你选择文件的时候,每选择一个,就把这个文件的名字加到这个files中,用,号隔开,这样就会有一个files=filename1,filenam2,filename3,filename4 这样你在后台获取files,然后用,号分割,就可以获取每个附件了

多个附件上传就是这样做的

<form action="uploadURL" method="post" enctype="multipart/form-data">

标题:<input type="text" name="tit" /><br/>

内容:<input type="text" name="te" /><br/>

1:<input type="file" name="img1"/><br/>

2:<input type="file" name="img2"/><br/>

<input type="submit" value="提交">

</form>

//创建硬盘文件工厂对象,设置上传的缓存区大小和临时文件

DiskFileItemFactory disk=new DiskFileItemFactory();

//实例化servlet上传的对象,把表单的数据都放在这个对象中

ServletFileUpload up=new ServletFileUpload(disk);

List<FileItem> list=upparseRequest(request);

//由于list中有普通表单和非普通表单 所以给定两个集合

Map<String,String> map=new HashMap<String, String>();

for(int i=0;i<listsize();i++){

FileItem item=listget(i); //获取表单的数据

if(itemisFormField()){//判断该数据属否是普通表单的数据

//获取普通表单的数据

String namename=itemgetFieldName(); //获取表单的名

String formvalue=itemgetString(); //获取输出的值

String value=new String(formvaluegetBytes("ISO-8859-1"),"utf-8"); //给获取的值 设置编码

//把普通表单的数据放入map中

mapput(namename, value);

}else{

//非普通

String filename=itemgetName(); ////获取文件名的名

//获取服务器上upload的地址

String rootpath=getServletContext()getRealPath("upload");

//获取文件的路径

String newpath=rootpath+"\\"+filename;

//写入文件

itemwrite(new File(newpath));

liadd(filename);

}

}

以上就是关于java后台怎么获取plupload上传的文件信息全部的内容,包括:java后台怎么获取plupload上传的文件信息、java.io.File类中获取文件名的方法是 。、java web项目java后台获取前台js上传文件的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存