您的位置:首页 > Web前端 > JavaScript

jsp中如何上传图片到服务器

2015-10-27 21:05 597 查看
jsp页面:

<div class="tg_per_photo" >

                        <img id="kk_photo_show" src="../images/${personinfo.photo}"/>

                        </div>

                        <div class="tg_wenzi">

                        <ul class="tg_hidden_photo"></ul>

<div id="tg_video_button" style="width:458px;height:45px; margin-top:15px; float:left;">

必须form标签
<form style="margin-top:20px;">
<input type="hidden" id="kk_fid" name="kk_defid"  value="${personinfo.userid}"/>

这里为上传图片的按钮
<input id="user_profile_pic" type="file" name="user_profile_pic"/> 

这里为修改的按钮
<a href="javascript:void(0)" onclick="updateFphoto()" style=" color:#F00; font-weight:600;  font-size:15px">确认修改</a> 
</form>
</div>

                        </div>  

javascript:

function updateFphoto(){

$.ajaxFileUpload({
url:"../file.action",
//action主要用来接受上传文件
secureuri:false,
//上传的时候是否使用安全协议https而不是http
type:"POST",
data:{op:'fphotoupload'},
dataType:'JSON',
fileElementId:'user_profile_pic',
success:function(data){
if(data.code==1){
alert("上传成功");

}
}
});
}

需导入的javascript包:

<script type="text/javascript" src="../js/ajaxfileupload.js"></script>

<script type="text/javascript" src="../js/uploadPreview.js"></script>

在下一条博客

servlet:

import com.yc.utils.FileUploadUtil;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//上传文件时,request已经没有用了
String op=request.getParameter("op");

//上传图片wenji
if(op!=null){
if("uploadfile".equals(op)){
Map<String,List<String>> pvalues=commonUpload(request,response,"images/");
uploadfileOp(pvalues,request,response);
}
}else{
Map<String,List<String>> pvalues=commonUpload(request,response,"images/");
List<String> ops=pvalues.get("op");
op=ops.get(0);
if(op!=null){
if("fphotoupload".equals(op)){
fphotouploadOp(pvalues,request,response);
}
}
}

}

private void uploadfileOp(Map<String, List<String>> pvalues,
HttpServletRequest request, HttpServletResponse response) throws IOException {
String fileName=pvalues.get("upload").get(1);
String callback=request.getParameter("CKEditorFuncNum");
PrintWriter out=response.getWriter();
out.println("<script type=\"text/javascript\">");
out.println("window.parent.CKEDITOR.tools.callFunction("+callback
+",'images/"+fileName+"','')");

out.println("</script>");
}

private Map<String,List<String>> commonUpload(HttpServletRequest request,
HttpServletResponse response,String fileAddress) throws UnsupportedEncodingException{
Map<String,List<String>> pvalues=null;
PageContext pagecontext=javax.servlet.jsp.JspFactory.getDefaultFactory().getPageContext(this,request,response,null,true,8192,true);
FileUploadUtil fuu=new FileUploadUtil();

try {
pvalues = fuu.fileUpload(pagecontext, fileAddress);
//完成图片上传

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
return pvalues;
}

public class FileUploadUtil {

private long maxFileSize = 10000000;
private long totalMaxFileSize = 10 * maxFileSize;
private String allowedFilesList = "jpg,JPG,jpeg,JPEG,bmp,BMP,gif,GIF,png,PNG";
private String deniedFilesList = "exe,doc,bat,js,sh";

public long getMaxFileSize() {
return maxFileSize;
}

public void setMaxFileSize(long maxFileSize) {
this.maxFileSize = maxFileSize;
}

public long getTotalMaxFileSize() {
return totalMaxFileSize;
}

public void setTotalMaxFileSize(long totalMaxFileSize) {
this.totalMaxFileSize = totalMaxFileSize;
}

public String getAllowedFilesList() {
return allowedFilesList;
}

public void setAllowedFilesList(String allowedFilesList) {
this.allowedFilesList = allowedFilesList;
}

public String getDeniedFilesList() {
return deniedFilesList;
}

public void setDeniedFilesList(String deniedFilesList) {
this.deniedFilesList = deniedFilesList;
}

public Map<String, List<String>> fileUpload(PageContext pageContext,
String uploadfilepath) throws Exception {
Map<String, List<String>> map = new HashMap<String, List<String>>();
SmartUpload su = new SmartUpload();
su.setCharset("utf-8");

su.initialize(pageContext);

// 1.限制每个上传文件的最大长度.
su.setMaxFileSize(maxFileSize);
// 2.限制总上传数据的长度
su.setTotalMaxFileSize(totalMaxFileSize);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc、txt文件.
su.setAllowedFilesList(allowedFilesList);
try {
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe、bat、jsp、htm、html扩展名的文件和没有扩展名的文件
su.setDeniedFilesList(deniedFilesList);
su.upload(); // 完成上传, 已经将图片数据传进servlet
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
}

Request req = su.getRequest();

// 取出多个参数
Enumeration enu = req.getParameterNames();
while (enu.hasMoreElements()) {
String pname = (String) enu.nextElement();
// System.out.println( pname+"\t"+ req.getParameter(pname));
String[] pvalues = req.getParameterValues(pname);

List<String> pvalueslist = Arrays.asList(pvalues); // 将一个数组转为list
map.put(pname, pvalueslist);
}

// 文件也有多个

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

Files files = su.getFiles();

for (Object obj : files.getCollection()) {
String filepath = uploadfilepath + java.io.File.separator; // 路径不能写死

File f = (File) obj;
String newname = sdf.format(new Date()) + "." + f.getFileExt();
filepath += newname;
try {
f.saveAs(filepath, SmartUpload.SAVE_VIRTUAL);

String fieldname = f.getFieldName(); // 上传的文件的字段名
String oldfilename = f.getFileName();

List<String> filelist = new ArrayList<String>();
filelist.add(oldfilename);
filelist.add(newname);

map.put(fieldname, filelist);

} catch (Exception e) {
e.printStackTrace();
}
}
return map;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp