mvcajax上傳文件
Ⅰ springmvc怎麼接受ajax發送過來的文件
你文件上傳用的什麼方式
如果是submit直接提交的需要給form加一個屬性:enctype="multipart/form-data"
如果是非同步提交則需要看你的上傳控制項的ID是否正確
Ⅱ asp.net mvc 如何不用form上傳文件
html與伺服器交互本質就是form提交,不用form伺服器不可能得到數據。
$.ajax()裡面構造form表單然後把file標簽append到form中post提交。注意上傳form的屬性類型要加multi....data(忘記名字了類似這個)
Ⅲ java接收ajax傳遞過來的圖片參數圖片參數
SpringMVC上傳首先需要在配置文件中配置文件解析器
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<propertyname="defaultEncoding"value="UTF-8"/>
<!--指定所上傳文件的總大小不能超過200KB。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和-->
<propertyname="maxUploadSize"value="200000"/>
</bean>
提交的form表單中需要包含enctype="multipart/form-data"
加上enctype後,Spring MVC的前端控制器會判斷是否是文件上傳, 自動轉換的
後台使用MultipartFile對象即可接收
可以直接form表單提交或者非同步上傳文件
Ⅳ mvc視圖中怎麼上傳圖片並顯示
如果只是上傳的話那太容易了,如果還要顯示那就難了,因為要顯示的話就不能只向伺服器提交一次請求,必須非同步提交。下面的例子是我親自寫的,非同步提交上傳圖片並預覽。全部代碼都在。
返回到前台頁面的JSON格式對象是以類的對象。
publicclassReturnImage
{
publicstringbig{get;set;}
publicstringsmall{get;set;}
publicstringisSuccessfull{get;set;}
publicstringmessage{get;set;}
}
對於上傳和生成縮略圖,請自行完成,以下是ASP.NETMVC的例子。
publicclassHomeController:Controller
{
//
//GET:/Home/
publicActionResultIndex()
{
returnView();
}
///<summary>
///上傳圖片
///</summary>
///<returns></returns>
publicActionResultUploadImage()
{
//定義錯誤消息
JsonResultmsg=newJsonResult();
try
{
//接受上傳文件
HttpPostedFileBasepostFile=Request.Files["upImage"];
if(postFile!=null)
{
DateTimetime=DateTime.Now;
//獲取上傳目錄轉換為物理路徑
stringuploadPath=Server.MapPath("~/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/");
//文件名
stringfileName=time.ToString("yyyyMMddHHmmssfff");
//後綴名稱
stringfiletrype=System.IO.Path.GetExtension(postFile.FileName);
//獲取文件大小
longcontentLength=postFile.ContentLength;
//文件不能大於2M
if(contentLength<=1024*2048)
{
//如果不存在path目錄
if(!Directory.Exists(uploadPath))
{
//那麼就創建它
Directory.CreateDirectory(uploadPath);
}
//保存文件的物理路徑
stringsaveFile=uploadPath+fileName+"_big"+filetrype;
try
{
//保存文件
postFile.SaveAs(saveFile);
//保存縮略圖的物理路徑
stringsmall=uploadPath+fileName+"_small"+filetrype;
MakeThumbnail(saveFile,small,320,240,"W");
ReturnImageimage=newReturnImage();
image.big="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_big"+filetrype;
image.small="/UploadFiles/"+time.Year+"/"+time.ToString("yyyyMMdd")+"/"+fileName+"_small"+filetrype;
msg=Json(image);
}
catch
{
msg=Json("上傳失敗");
}
}
else
{
msg=Json("文件大小超過限制要求");
}
}
else
{
msg=Json("請選擇文件");
}
}
catch(Exceptione)
{
;
}
msg.ContentType="text/html";
returnmsg;
}
///<summary>
由於回答超過最大限制,///生成縮略圖的代碼請向我索取
Ⅳ ajaxfileupload+springmvc上傳多文件的control怎麼寫
1.Spring mvc
a.xml配置:
[html] view plain print?
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<!-- set the max upload size1MB 1048576 -->
<property name="maxUploadSize">
<value>52428800</value>
</property>
<property name="maxInMemorySize">
<value>2048</value>
</property>
</bean>
b. 伺服器端接收解析
[java] view plain print?
public void imgUpload(
MultipartHttpServletRequest multipartRequest,
HttpServletResponse response) throws Exception {
response.setContentType("text/html;charset=UTF-8");
Map<String, Object> result = new HashMap<String, Object>();
//獲取多個file
for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
String key = (String) it.next();
MultipartFile imgFile = multipartRequest.getFile(key);
if (imgFile.getOriginalFilename().length() > 0) {
String fileName = imgFile.getOriginalFilename();
//改成自己的對象哦!
Object obj = new Object();
//Constant.UPLOAD_GOODIMG_URL 是一個配置文件路徑
try {
String uploadFileUrl = multipartRequest.getSession().getServletContext().getRealPath(Constant.UPLOAD_GOODIMG_URL);
File _apkFile = saveFileFromInputStream(imgFile.getInputStream(), uploadFileUrl, fileName);
if (_apkFile.exists()) {
FileInputStream fis = new FileInputStream(_apkFile);
} else
throw new FileNotFoundException("apk write failed:" + fileName);
List list = new ArrayList();
//將obj文件對象添加到list
list.add(obj);
result.put("success", true);
} catch (Exception e) {
result.put("success", false);
e.printStackTrace();
}
}
}
String json = new Gson().toJson(result,
new TypeToken<Map<String, Object>>() {
}.getType());
response.getWriter().print(json);
}
//保存文件
private File saveFileFromInputStream(InputStream stream, String path,
String filename) throws IOException {
File file = new File(path + "/" + filename);
FileOutputStream fs = new FileOutputStream(file);
byte[] buffer = new byte[1024 * 1024];
int bytesum = 0;
int byteread = 0;
while ((byteread = stream.read(buffer)) != -1) {
bytesum += byteread;
fs.write(buffer, 0, byteread);
fs.flush();
}
fs.close();
stream.close();
return file;
}
2.關於前端代碼
a.修改ajaxfileupload.js
先到官網下載該插件.
將源文件的createUploadForm的代碼替換如下:
[javascript] view plain print?
createUploadForm: function(id, fileElementId, data)
{
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
if (data) {
for ( var i in data) {
jQuery(
'<input type="hidden" name="' + i + '" value="'
+ data[i] + '" />').appendTo(form);
}
}
for (var i = 0; i < fileElementId.length; i ++) {
var oldElement = jQuery('#' + fileElementId[i]);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileElementId[i]);
jQuery(oldElement).attr('name', fileElementId[i]);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);
}
//set attributes
jQuery(form).css('position', 'absolute');
jQuery(form).css('top', '-1200px');
jQuery(form).css('left', '-1200px');
jQuery(form).appendTo('body');
return form;
}
第一步高定
b. 頁面代碼
html:
[html] view plain print?
<input type="button" value="添加附件" onclick="createInput('more');" />
<div id="more"></div>
js:這里可以專門寫封裝類,以及給file加onchange事件判斷文件格式。由於時間有限,未修改
[javascript] view plain print?
var count = 1;
/**
* 生成多附件上傳框
*/
function createInput(parentId){
count++;
var str = '<div name="div" ><font style="font-size:12px;">附件</font>'+
' '+ '<input type="file" contentEditable="false" id="uploads' + count + '' +
'" name="uploads'+ count +'" value="" style="width: 220px"/><input type="button" value="刪除" onclick="removeInput(event)" />'+'</div>';
document.getElementById(parentId).insertAdjacentHTML("beforeEnd",str);
}
/**
* 刪除多附件刪除框
*/
function removeInput(evt, parentId){
var el = evt.target == null ? evt.srcElement : evt.target;
var div = el.parentNode;
var cont = document.getElementById(parentId);
if(cont.removeChild(div) == null){
return false;
}
return true;
}
下面是2個修改多file用的js,用於顯示和刪除,可以於上面的合並精簡代碼:
[javascript] view plain print?
function addOldFile(data){
var str = '<div name="div' + data.name + '" ><a href="#" style="text-decoration:none;font-size:12px;color:red;" onclick="removeOldFile(event,' + data.id + ')">刪除</a>'+
' ' + data.name +
'</div>';
document.getElementById('oldImg').innerHTML += str;
}
function removeOldFile(evt, id){
//前端隱藏域,用來確定哪些file被刪除,這里需要前端有個隱藏域
$("#imgIds").val($("#imgIds").val()=="" ? id :($("#imgIds").val() + "," + id));
var el = evt.target == null ? evt.srcElement : evt.target;
var div = el.parentNode;
var cont = document.getElementById('oldImg');
if(cont.removeChild(div) == null){
return false;
}
return true;
}
ajax上傳文件:
[javascript] view plain print?
function ajaxFileUploadImg(id){
//獲取file的全部id
var uplist = $("input[name^=uploads]");
var arrId = [];
for (var i=0; i< uplist.length; i++){
if(uplist[i].value){
arrId[i] = uplist[i].id;
}
}
$.ajaxFileUpload({
url:'xxxxx',
secureuri:false,
fileElementId: arrId, //這里不在是以前的id了,要寫成數組的形式哦!
dataType: 'json',
data: {
//需要傳輸的數據
},
success: function (data){
},
error: function(data){
}
});
}
Ⅵ springmvc ajaxupload上傳文件 能不能帶參數
可以。
<script type="text/javascript" src="<%=basePath%>/view/common/easyui/ajaxfileupload.js"></script>
<script type="text/javascript">
//全局參數
var attachment_page_url = "admin/attachment/manager/page";
var basepath = '<%=basePath%>';
//單個上傳
var uploadUrl = basepath+"portal/attachment/uploadFile";
</script>
Ⅶ SpringMVC
一、SpringMVC應用
1.springmvc是一個表現層的框架
經典三層架構:表現層, service層, 層。
Spring MVC和Struts2一樣,都是 為了解決表現層問題 的web框架,它們都是基於 MVC 設計模
式的。而這些表現層框架的主要職責就是處理前端HTTP請求。
Spring MVC 本質可以認為是對servlet的封裝,簡化了我們serlvet的開發
2.工作流程:
開發過程:
請求處理流程:
九大組件:
3.請求參數綁定,說白了SpringMVC是如何接受參數的:
原生servlet接收一個整型參數:
SpringMVC框架對Servlet的封裝,簡化了servlet的很多操作,SpringMVC框架對Servlet的封裝,簡化了servlet的很多操作
參數綁定:取出參數值綁定到handler⽅法的形參上
默認支持 Servlet API 作為方法參數:
綁定簡單類型參數:
綁定Pojo類型參數:
綁定Pojo包裝對象參數:
綁定日期類型參數(需要配置自定義類型轉換器):
4.Restful風格
什麼是Restful:
什麼是rest:
Restful的優點:
Restful的特性:
Restful的示例:
SpringMVC如何支持Restful風格的請求:
5.Ajax Json交互
交互:兩個方向
什麼是Json:
@ResponseBody註解:
分析SpringMVC使用Json交互:
二、SpringMVC高級技術
1.攔截器(Inteceptor)使用
監聽器、過濾器、攔截器的對比:
攔截器的執行流程:
多個攔截器的執行流程:
自定義SpringMVC攔截器:
2.處理multipart形式的數據
文件上傳:
3.在控制器中處理異常:
4.基於Flash屬性的跨重定向請求數據傳遞:
三、手寫SpringMVC框架:
四、SpringMVC源碼剖析
1.前端控制器 DispatcherServlet 繼承結構:
2.重要時機點分析
SpringMVC處理請求的流程即為:
3.核心步驟getHandler方法剖析:
4.核心步驟getHandlerAdapter方法剖析:
5.核心步驟ha.handle方法剖析:
6.核心步驟processDispatchResult方法剖析:
7.SpringMVC九大組件初始化:
五、SSM整合
1.整合策略:先整合Spring + Mybatis,然後再整合SpringMVC
2.Mybatis整合Spring
3.整合SpringMVC
未完待補充完整。。。