java ,SmartUpload上传文件后怎么把上传到服务器上的文件路径写入数据库

java ,SmartUpload上传文件后怎么把上传到服务器上的文件路径写入数据库,第1张

上传文件时,需要给SmartUpload传一个上传文件的保存地址,一般都用一个String来表示,使用request来获得。比如,你要把文件保存在项目路径下的upload文件夹,刚:

String

path

=

requestgetRealPath("upload");//获取upload文

//夹的绝对路径。

//得到:c://项目名/upload/

然后再拼上你的文件名,比如你上传一个叫testtxt的文件,则全部的URL为:

path

+

fileName

=

"c:///项目名/upload/"+"texttxt";

在实际的编程中,其实数据库只需要保存fileName就可以了,path作为配置,每次系统加载时再去读取,这样做的好处是:系统的环境变化时,只需要修改配置文件就能够搞定,而且不会重复保存多余的路径(因为路径都是一样的)

String realpath = ServletActionContextgetServletContext()getRealPath("/upload") ;//获取服务器路径

        String[] targetFileName = uploadFileName;

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

           File target = new File(realpath, targetFileName[i]);

              FileUtilscopyFile(upload[i], target); 

              //这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类    

         } 

其中private File[] upload;// 实际上传文件

    private String[] uploadContentType; // 文件的内容类型

    private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法!

利用SVN这个软件,百度就能下载,安装完后根据公司的SVN地址就可以访问提交的代码等文件并导入到本地,自己写的代码也可以提交上去。

而且eclipse、Myeclipse也可以安装SVN插件,直接在软件内检出和提交代码。

绝大部分公司都是用的SVN软件来管理、同步代码。

上传一般考虑两种办法:1、上传到服务器,数据库中存储服务器上的相对路径;2、转换为二进制流存入到数据库中。现在常用的做法都是选择第一种,因为第二种太占数据库空间,而且查找读取效率不高。很多开源的文件上传框架(比如spring中的commons-fileupload)都是采用第一种方式。上传到服务器不会影响系统的运行速度,你可以选择将的目录建立在非系统盘,存储容量比较大的盘,如F盘等。注意名字不要重复,建议用uuid

服务器端,做一个FTP,客户端使用APACHE的FTP组件上传。。。。。。。

服务器端实现HTTP的POST接收,,,,,客户端使用httpclient组件post上去

/

      文件上传处理主程序。

      

      @return int 操作结果 0 文件操作成功;1 request对象不存在。 2 没有设定文件保存路径或者文件保存路径不正确;3

              没有设定正确的enctype;4 文件操作异常。

     /

    public Map<String, String> fileupload_java(HttpServletRequest request,String uploadpath) {

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

       

       try {

            // 参数或者文件名

            String name = null;

            // 参数的value

            String value = null;

            // 读取的流是否为文件的标志位

            boolean fileFlag = false;

            // 要存储的文件。

            File tmpFile = null;

            // 上传的文件的名字

            String fName = null;

            FileOutputStream baos = null;

            BufferedOutputStream bos = null;

            int rtnPos = 0;

            byte[] buffs = new byte[BUFSIZE  8];

            

            // 取得ContentType

            String contentType = requestgetContentType();

            int index = contentTypeindexOf("boundary=");

            String boundary = "--" + contentTypesubstring(index + 9);

            String endBoundary = boundary + "--";

            

            // 从request对象中取得流。

            ServletInputStream sis = requestgetInputStream();

            // 读取1行

            while ((rtnPos = sisreadLine(buffs, 0, buffslength)) != -1) {

               

                String strBuff = new String(buffs, 0, rtnPos);

                if (strBuffstartsWith(boundary)) {

                    if (name != null && nametrim()length() > 0) {

                        if (fileFlag) {

                            bosflush();

                            baosclose();

                            bosclose();

                            baos = null;

                            bos = null;

                            paramput(name, tmpFilegetAbsolutePath());

                        } else {

                            String paramValue = paramget(name);

                            paramValue += ","+ value;

                            paramput(name, paramValue);

                        }

                    }

                    name = new String();

                    value = new String();

                    fileFlag = false;

                    fName = new String();

                    rtnPos = sisreadLine(buffs, 0, buffslength);

                    if (rtnPos != -1) {

                        strBuff = new String(buffs, 0, rtnPos);

                        if (strBufftoLowerCase()startsWith("content-disposition: form-data; ")) {

                            int nIndex = strBufftoLowerCase()indexOf("name=\"");

                            int nLastIndex = strBufftoLowerCase()indexOf("\"", nIndex + 6);

                            name = strBuffsubstring(nIndex + 6, nLastIndex);

                        }

                        int fIndex = strBufftoLowerCase()indexOf("filename=\"");

                        if (fIndex != -1) {

                            fileFlag = true;

                            int fLastIndex = strBufftoLowerCase()indexOf("\"", fIndex + 10);

//                            fName = strBuffsubstring(fIndex + 10, fLastIndex);

                            fName = new String(strBuffsubstring(fIndex + 10, fLastIndex)getBytes(),"gbk");

                            fName = FileLgetFileNameWithoutSeprater(fName);

                            if (fName == null || fNametrim()length() == 0) {

                                fileFlag = false;

                                sisreadLine(buffs, 0, buffslength);

                                sisreadLine(buffs, 0, buffslength);

                                sisreadLine(buffs, 0, buffslength);

                                continue;

                            }else{

                                fName = FileLgetFileNameTime(fName);

                                sisreadLine(buffs, 0, buffslength);

                                sisreadLine(buffs, 0, buffslength);

                            }

                        }

                    }

                } else if (strBuffstartsWith(endBoundary)) {

                   if (name != null && nametrim()length() > 0) {

                        if (fileFlag) {

                            bosflush();

                            baosclose();

                            bosclose();

                            baos = null;

                            bos = null;

                            paramput(name, tmpFilegetAbsolutePath());

                        } else {

                            String paramValue = paramget(name);

                            paramValue += ","+ value;

                            paramput(name, paramValue);

                        }

                    }

                } else {

                    if (fileFlag) {

                        if (baos == null && bos == null) {

                            tmpFile = new File(uploadpath + fName);

                            baos = new FileOutputStream(tmpFile);

                            bos = new BufferedOutputStream(baos);

                        }

                        boswrite(buffs, 0, rtnPos);

                        baosflush();

                    } else {

                        value = value + strBuff;

                    }

                }

            }

        } catch (IOException e) {

            eprintStackTrace();

        }

        return param;

    }

这里你弄错了一个问题;\x0d\你的程序是要传递的二进制数据\x0d\而不是传递路径,然后再到服务器读取文件数据(你的服务器有这个文件)\x0d\只有当你的服务器下有这个文件了,你传递一个路径,读取是可以的\x0d\//---\x0d\关于如何上传文件, 自己google一下,很多教程

如果服务器开通了ftp服务,你的客户端可以实现一个ftp的客户端,通过ftp服务将文件上传到服务器的指定目录下,可以使用orgapachecommonsnetftpFTPClient这个类去实现,非常的简单,网上有很多现成的代码可以用

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java ,SmartUpload上传文件后怎么把上传到服务器上的文件路径写入数据库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情