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

本文介绍如何在Freemarker模板中实现文件上传,并利用ajax进行无刷新上传处理。探讨了表单enctype属性的作用及配置方法,通过示例展示了使用ajaxFileUpload插件完成图片上传的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于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.youkuaiyun.com/haidage/article/details/6859716

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值