ajax頁面無重新整理上傳檔案
最近在研究struts2檔案上傳,感覺這塊無論是做企業網站還是做系統都用的挺多的,尤其是圖片上傳。但是上傳我們又有幾種方式,一種是表單提交,一種是ajax無重新整理上傳。
這次我要介紹的就是struts2+ajax無重新整理上傳圖片,將圖片儲存在本地,圖片將以路徑的形式儲存在資料庫裡,我們在讀取的時候只需要讀取圖片路徑,系統就會去所在路徑找到對應圖片並顯示。
我們在做圖片上傳時除了基礎的jar包外,還需用到struts2-json-plugin.jar。我用的是2.3.24版的。
本系統前端需要引入ajaxfileupload.js和jquery.min.js兩個js控制元件。
正式流程如下:前端頁面顯示有file控制元件,點選file控制元件,找到上傳圖片,執行onchange事件,通過strtus的json在struts.xml中配置,然後在action中寫入對應uploadfile方法,返回imageString圖片路徑。
關於前臺頁面的處理:
頁面顯示寫法如下,a標籤中class為樣式,input的type為file檔案型別:
<td colspan="2"><a href="javascript:;" class="a-upload">
<input type="file" name="imgTitle" id="imgTitle" onchange="uploadFile();" accept="image/gif,image/jpeg,image/jpg,image/png">點選這裡上傳檔案</a>
<div id="images"></div></td>
樣式如下:
.input { border:1px solid #dbdbdb; width:256px; height:25px; line-height:25px;}
.a-upload {
padding: 4px 10px;
height: 20px;
line-height: 20px;
position: relative;
cursor: pointer;
color: #993300;
background: #fafafa;
border: 1px solid #ddd;
border-radius: 4px;
overflow: hidden ;
display: inline-block;
*display: inline;
*zoom: 1
}
.a-upload input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
filter: alpha(opacity=0);
cursor: pointer
}
.a-upload:hover {
color: #444;
background: #eee;
border-color: #ccc;
text-decoration: none
}
點選onchange,執行js如下:
function uploadFile() {
if ($("#imgTitle").val().length > 0) {
ajaxFileUpload();
}
else {
alert("請選擇圖片");
}
}
function ajaxFileUpload() {
var imgName = $("input[name='designProject.imgTitle']").val();
$.ajaxFileUpload({
url: 'admin/uploadFile', //用於檔案上傳的伺服器端請求地址
type: 'post',
secureuri: false, //一般設定為false
fileElementId: 'imgTitle', //檔案上傳空間的id屬性 <input type="file" id="file" name="file" />
dataType: 'JSON', //返回值型別 一般設定為json
data:{'oldImageString':imgName},
success: function (imageString, status) //伺服器成功響應處理函式
{
if(""!=imageString && "0"==imageString.substr(0,1)) {
alert(imageString.substr(1,imageString.length-1));
return false;
}
imageString = imageString.replace(/\\/g, '');
var aa="<img src="+imageString+" width='150px;' height='150px;' />";
aa += "<input type='hidden' value="+imageString+" id='imgTitle' name='designProject.imgTitle' />";
$("#images").html(aa);
},
error: function (data, status, e)//伺服器響應失敗處理函式
{
alert("error="+e);
}
});
return false;
}
Struts2寫法如下注意是json格式:
<package name="admin_json" namespace="/admin" extends="json-default">
<action name="uploadFile" class="designAction" method="uploadFile">
<result type="json">
<param name="root">imageString</param>
<param name="contentType">text/html</param>
</result>
</action>
</package>
Action寫法如下:
private String imageString;
private File imgTitle;
private String imgTitleFileName; // 檔名稱
private String imgTitleContentType; // 檔案型別
public String uploadFile() {
try { ServletActionContext.getRequest().setCharacterEncoding("UTF-8");
String realpath = this.getClass().getClassLoader().getResource("").getPath();
realpath = realpath.split("WEB-INF/classes")[0] + "uploadFile/";
File savedir = new File(realpath);
if (!savedir.getParentFile().exists())
savedir.getParentFile().mkdirs();
String looppath = "uploadFile/";
Date datenew = new Date();
SimpleDateFormat simpleDateFormatnew = new SimpleDateFormat("yyyyMMddhhmmss");
imageString = "";
if (imgTitle != null) {
int last = imgTitleFileName.lastIndexOf(".");
String type = imgTitleFileName.substring(last);
if (!".jpg".equals(type.toLowerCase()) && !".jpeg".equals(type.toLowerCase())
&& !".gif".equals(type.toLowerCase()) && !".png".equals(type.toLowerCase())) {
imageString = "0上傳圖片格式不正確,只能是jpg,gif,jpeg,png格式";
return SUCCESS;
}
imgTitleFileName = simpleDateFormatnew.format(datenew) + "_00" + type;
File savefile = new File(savedir, imgTitleFileName);
FileUtils.copyFile(imgTitle, savefile);
imageString = looppath + imgTitleFileName;
}catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
Java類中全域性變數需要有對應的get和set方法。最後返回前端的為imageString圖片路徑,該圖片路徑用於儲存至資料庫的路徑。需json傳值至前端,在form表單提交整體資訊的時候提交即可。
created by 李曉晴
相關推薦
ajax頁面無重新整理上傳檔案
最近在研究struts2檔案上傳,感覺這塊無論是做企業網站還是做系統都用的挺多的,尤其是圖片上傳。但是上傳我們又有幾種方式,一種是表單提交,一種是ajax無重新整理上傳。 這次我要介紹的就是struts2+ajax無重新整理上傳圖片,將圖片儲存在本地,圖片將以
form+iframe+file 頁面無重新整理上傳檔案並獲取返回值
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><but
jQuery+php+ajax實現無重新整理上傳檔案功能
jQuery+php+ajax實現無重新整理上傳檔案功能,還帶有上傳進度條動畫效果,支援圖片、視訊等大檔案上傳。 js程式碼
檔案上傳的動作不能太俗,必須頁面無重新整理上傳
常規操作上傳檔案 1 <form action="xxx.action" method="post" enctype="multipart/form-data"> 2 <input type="file" name="userfile" multiple><br&
基於jQuery的ajax系列之用FormData實現頁面無重新整理上傳
接著上一篇ajax系列之用jQuery的ajax方法向伺服器發出get和post請求寫,這篇主要寫如何利用ajax和FormData實現頁面無重新整理的檔案上傳效果,主要用到了jQuery的ajax()方法和XMLHttpRequest Level 2的FormData介面。
模仿Ajax的動態無重新整理上傳檔案
使用到的jar檔案:commons-fileupload-1.3.jar,commons-io-2.4.jar jsp頁面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
通過Ajax使用FormData物件無重新整理上傳檔案
寫在前面:本文說的這個方案有瀏覽器相容性問題;所有主流瀏覽器的較新版本已經支援這個物件了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+,對相容性比較敏感的網站慎用。 在工作中遇到了一個問題:在一個頁面中,有4塊內容
jquery ajax 無重新整理上傳檔案到servlet
刪除檔案的表單要加入如下enctype屬性: <form id="upload" enctype="multipart/form-data"><!--//由於使用ajax上傳,不用加action和method屬性--> 要實現無重新整理上傳檔案首
ajax無重新整理上傳檔案MVC
@{ ViewBag.Title = " Assistant"; //Layout = null; } <script type="text/javascript"> $(document).ready(function () {
form+iframe實現無重新整理上傳檔案
原理: 利用form的target屬性,將form的action在iframe中開啟,並接收返回結果,實現仿ajax的頁面無重新整理檔案上傳。 正是action在iframe中開啟,所以,頁面才會無重
如何使用ajax實現無重新整理上傳
詳細程式碼如下 9.upload.html <!DOCTYPE HTML> <html> <head> <meta http-equiv="Cont
iframe實現無重新整理上傳檔案
其實在ajax出現之前,web應用也可以是無重新整理的,那時大多通過IFrame來做到這一點。當然Ajax出現之後,人們一窩蜂地投奔Ajax 的陣營了,iFrame 就乏人問津了。但是用iFrame來實現無重新整理上傳檔案確實一個很好的選擇。 [html] vi
struts2使用form表單無重新整理上傳檔案
這幾天在做專案時有用到一個form表單來上傳多個檔案,並且要求不能重新重新整理。當時在做的時候由於不是很瞭解這個東西,導致還是走了一些彎路的,現在把程式碼貼出來,供大家一起交流 html程式碼 <div id="book" style="display:none; b
基於iframe的無重新整理上傳檔案,並返回上傳結果
<!-- 將target配置成一個隱藏的iframe --> <form id= "form1" enctype ="multipart/form-data" action= "/F
Javascript與asp.net 實現Ajax多檔案無重新整理上傳
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w
ajaxfileupload.js外掛結合一般處理檔案實現Ajax無重新整理上傳
先上幾張圖更直觀展示一下要實現的功能,本功能主要通過Jquery ajaxfileupload.js外掛結合ajaxUpFile.ashx一般應用程式處理檔案實現Ajax無重新整理上傳功能,結合NPOI2.0實現資料讀取。這個功能在實際工作種經常用到,希望能
Struts2+Ajax+Jquery的無重新整理上傳圖片
####備註:這裡不詳細講解Struts2的檔案上傳知識點,想了解請點選我另外一篇文章 http://blog.csdn.net/qq_25281057/article/details/52333677 ###這裡我引用了兩個js檔案,一個Jquery和一個form表單
利用js實現無重新整理上傳頭像(或檔案)並顯示進度條
無重新整理上傳原理:現在我們利用新技術FormData表單資料物件可以實現快速收集表單資訊,普通表單域 和 上傳檔案域 均可以收集,再結合ajax就可以實現無重新整理上傳。 那麼怎樣顯示進度條呢?原來ajax物件有upload成員,該成員也是物件,構造器是XMLHttpR
ajax無重新整理上傳圖片,基於springMVC
html程式碼(圖片上傳Fform表單裡的target屬性的值frameFile,是form之後的iframe的name值, 這樣的寫法是讓當前的form表單在提交表單內容的時候轉交給iframe中進行頁面中表單處理, 並且不會產生當前頁面跳轉!): <form id
無重新整理上傳圖片的幾種方式
背景知識: 無重新整理上傳圖片主要還是為了在提交表單之前進行圖片的預覽。使用者體驗相對於提交表單跳轉顯示圖片的方式總還是要好一些的。 本文主要介紹三種無重新整理上傳圖片的方式 1.使用iframe子頁面的形式達到無重新整理上傳圖片的功能。首先設定一個隱藏的i