由于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