freemarker+ajax+Spring mvc+SFTP上传文件



freemarker+ajax+Spring mvc+SFTP上传文件

由于freemarker的ftl文件没法iframe进来文件(或者我不知道怎么iframe,今天一直报找不着,刚用freemarker 觉得各种不适应,如:类似request.getContextPath()就不知道如何实现),上传图片的文件域就只能包含在当前form中(如果不用ajax,当时特别想用ajax,就是不知道还有ajaxfileupload.js这个插件),form和form在上传文件时不能嵌套(嵌套后$(“#fileForm”).submit()没有反应)只能将两个form并排,但如果要达到前台上传图片也不跳转时就必须得ajax。

 

表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
enctype=”multipart/form-data”是上传二进制数据; form里面的input的值以2进制的方式传过去。 form里面的input的值以2进制的方式传过去,所以request就得不到值了

 

ajax上传图片

 

$.ajaxFileUpload({
        //处理文件上传操作的服务器端地址(可以传参数,已亲测可用)
        url:'fileUpload.do?uname=fanyuna',
        secureuri:false,                       //是否启用安全提交,默认为false
        fileElementId:'myBlogImage',           //文件选择框的id属性
        dataType:'text',                       //服务器返回的格式,可以是json或xml等
        success:function(data, status){        //服务器响应成功时的处理函数
            data = data.replace("<PRE>", '');  //ajaxFileUpload会对服务器响应回来的text内容加上<pre>text</pre>前后缀
            data = data.replace("</PRE>", '');
            data = data.replace("<pre>", '');
            data = data.replace("</pre>", ''); //本例中设定上传文件完毕后,服务端会返回给前台[0`filepath]
            if(data.substring(0, 1) == 0){     //0表示上传成功(后跟上传后的文件路径),1表示失败(后跟失败描述)
                $("img[id='uploadImage']").attr("src", data.substring(2));
                $('#result').html("图片上传成功<br/>");
            }else{
                $('#result').html('图片上传失败,请重试!!');
            }
        },
        error:function(data, status, e){ //服务器响应失败时的处理函数
            $('#result').html('图片上传失败,请重试!!');
        }
    });

 

 

Spring Mvc

Controller

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile(“uimage”);

//文件名

String fileName = file.getFileItem().getName();


//图片的高、宽

BufferedImage bi=ImageIO.read( file.getInputStream() );

int width=bi.getWidth();

int height=bi.getHeight();

xml

 

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 指定所上传文件的总大小不能超过800KB......注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
        <property name="maxUploadSize" value="800000"/>
    </bean>

 

 

SFTP

mkdir 每次只能创建一级目录,不能一次创建多级目录

判断目录是否存在 可通过ls()看文件夹下是否有内容来处理

具体可参考

http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html

http://blog.csdn.net/haidage/article/details/6859716