⑴ jsp中使用jquery的ajaxfileupload插件怎麼實現非同步上傳
JSP頁面中引入的script代碼
<script>
function
ajaxFileUpload()
{
$("#loading").ajaxStart(function(){
$(this).show();
})//開始上傳文件時顯示一個圖片
.ajaxComplete(function(){
$(this).hide();
});//文件上傳完成將圖片隱藏起來
$.ajaxFileUpload({
url:'AjaxImageUploadAction.action',//用於文件上傳的伺服器端請求地址
secureuri:false,//一般設置為false
fileElementId:'imgfile',//文件上傳空間的id屬性
<input
type="file"
id="imgfile"
name="file"
/>
dataType:
'json',//返回值類型
一般設置為json
success:
function
(data,
status)
//伺服器成功響應處理函數
{
alert(data.message);//從伺服器返回的json中取出message中的數據,其中message為在struts2中定義的成員變數
if(typeof(data.error)
!=
'undefined')
{
if(data.error
!=
'')
{
alert(data.error);
}else
{
alert(data.message);
}
}
},
error:
function
(data,
status,
e)//伺服器響應失敗處理函數
{
alert(e);
}
}
)
return
false;
}
</script>
struts.xml配置文件中的配置方法:
<struts>
<package
name="struts2"
extends="json-default">
<action
name="AjaxImageUploadAction"
class="com.test.action.ImageUploadAction">
<result
type="json"
name="success">
<param
name="contentType">text/html</param>
</result>
<result
type="json"
name="error">
<param
name="contentType">text/html</param>
</result>
</action>
</package>
</struts>
上傳處理的Action
ImageUploadAction.action
package
com.test.action;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileOutputStream;
import
java.util.Arrays;
import
org.apache.struts2.ServletActionContext;
import
com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public
class
ImageUploadAction
extends
ActionSupport
{
private
File
imgfile;
private
String
imgfileFileName;
private
String
imgfileFileContentType;
private
String
message
=
"你已成功上傳文件";
public
File
getImgfile()
{
return
imgfile;
}
public
void
setImgfile(File
imgfile)
{
this.imgfile
=
imgfile;
}
public
String
getImgfileFileName()
{
return
imgfileFileName;
}
public
void
setImgfileFileName(String
imgfileFileName)
{
this.imgfileFileName
=
imgfileFileName;
}
public
String
getImgfileFileContentType()
{
return
imgfileFileContentType;
}
public
void
setImgfileFileContentType(String
imgfileFileContentType)
{
this.imgfileFileContentType
=
imgfileFileContentType;
}
public
String
getMessage()
{
return
message;
}
public
void
setMessage(String
message)
{
this.message
=
message;
}
@SuppressWarnings("deprecation")
public
String
execute()
throws
Exception
{
String
path
=
ServletActionContext.getRequest().getRealPath("/upload/mri_img_upload");
String[]
imgTypes
=
new
String[]
{
"gif",
"jpg",
"jpeg",
"png","bmp"
};
try
{
File
f
=
this.getImgfile();
String
fileExt
=
this.getImgfileFileName().substring(this.getImgfileFileName().lastIndexOf(".")
+
1).toLowerCase();
/*
if(this.getImgfileFileName().endsWith(".exe")){
message="上傳的文件格式不允許!!!";
return
ERROR;
}*/
/**
*
檢測上傳文件的擴展名是否合法
*
*/
if
(!Arrays.<String>
asList(imgTypes).contains(fileExt))
{
message="只能上傳
gif,jpg,jpeg,png,bmp等格式的文件!";
return
ERROR;
}
FileInputStream
inputStream
=
new
FileInputStream(f);
FileOutputStream
outputStream
=
new
FileOutputStream(path
+
"/"+
this.getImgfileFileName());
byte[]
buf
=
new
byte[1024];
int
length
=
0;
while
((length
=
inputStream.read(buf))
!=
-1)
{
outputStream.write(buf,
0,
length);
}
inputStream.close();
outputStream.flush();
}
catch
(Exception
e)
{
e.printStackTrace();
message
=
"文件上傳失敗了!!!!";
}
return
SUCCESS;
}
}
轉載,僅供參考。
⑵ Java中如何圖片非同步上傳
在java中要實現非同步上傳要提前做好准備,對於文件上傳,瀏覽器在上傳的過程中是將文件以流的形式提交到伺服器端的,如果直接使用Servlet獲取上傳文件的輸入流然後再解析裡面的請求參數是比較麻煩,所以一般選擇採用apache的開源工具common-fileupload這個文件上傳組件。
這個common-fileupload上傳組件的jar包可以去apache官網上面下載,也可以在struts的lib文件夾下面找到,struts上傳的功能就是基於這個實現的。
common-fileupload是依賴於common-io這個包的,所以還需要下載這個包。剩下的就是js文件的導入了,我導入了以下文件:
<script type="text/javascript" src="lib/Js/jquery.js"></script>
<script ltype="text/javascript" src="/js/ajaxfileupload.js"></script>
在頁面中的寫法:
div class="controls"><span class="btn green fileinput-button"><i class="icon-plus icon-white"></i>
<span>上傳照片</span>
<input id="fileToUpload" name="myfiles" type="file" onchange="upload()" title="上傳" /></span>
</div>function upload(){
$.ajaxFileUpload
(
{
url:'<%=basePath%>sysperson/uploadpic',
secureuri:false,
fileElementId:'fileToUpload',
dataType: 'text',
success: function (data, status)
{
document.all.mypic.src="<%=basePath%>uploads/" + data;
document.all.picpath.value = data;
}, error : function(data, status, e) {
alert(e);
}
});
}
⑶ 同步上傳文件和非同步上傳文件
兩者最大的區別就是:表單上傳過程中,整個頁面就刷新了;而非同步上傳就可以達到只刷新局部位置!
參考文章地址:[ https://www.cnblogs.com/fengxuehuanlin/p/5311648.html]
對上傳文件的處理
註:表單提交中的 "button"按鈕,不需要type類型,或者type="Submit"
[圖片上傳中...(-ac9a5e-1575880787952-0)]
2 同步上傳
[ https://www.cnblogs.com/fengxuehuanlin/p/5311648.html]
⑷ 在php中如何向資料庫中非同步插入圖片
一般不向資料庫插入圖片 而是插入圖片的src 通過src找到圖片然後顯示。
(更多非同步問題http://bbs.hounwang.com)
<?php
session_start();
//array數組中放圖片的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]>2097152){ //圖片大小判斷
echo "上傳圖片不能大於2M";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
exit;
}
$ftype =$files["type"];
if(!in_array($ftype,$uptypes)){ //圖片格式判斷
echo "上傳的圖片文件格式不正確";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
}
$fname = $files["tmp_name"]; //在伺服器臨時存儲名稱
$image_info = getimagesize($fname);
$name = $files["name"];
$str_name = pathinfo($name); //以數組的形式返迴文件路勁的信息
$extname = strtolower($str_name["extension"]); //把字元串改為小寫 extensiorn擴展名
$upload_dir = "upload/"; //upload文件夾
$file_name = date("YmdHis").rand(1000,9999).".".$extname;
$str_file = $upload_dir.$file_name; //文件目錄
//存入資料庫
$con=mysql_connect("localhost","root","");
if(!$con){
die(("資料庫連接失敗").mysql_error());
}
mysql_select_db("mywork",$con);
$sql="update user set picpath='$str_file' where user_name='$username'"; //將圖片地址插入資料庫mywork
mysql_query($sql,$con);
mysql_close($con);
if(!file_exists($upload_dir)){
mkdir($upload_dir); //創建目錄 成功則返回true 失敗則返回flase
}
if(!move_uploaded_file($files["tmp_name"],$str_file)){ //將上傳的文件移動到新的目錄 要移動文件 和文件新目錄 成功則返回true
echo "圖片上傳失敗";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入失敗後希望跳轉的頁面>";
}
else{
//echo "<img src=".$str_file.">";
echo "圖片上傳成功";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入成功希望挑戰的頁面>";
}
⑸ Android圖片批量上傳的功能。(圖片比較大)
Android中上傳圖片或者下載圖片,使用最多的是xUtils和imageloader、glide,選用這兩種的哪一種框架都行,因為是批量和圖片大容易造成界面卡以及上傳速度慢,對圖片操作不當就容易造成OOM異常,一般對於批量上傳大圖片都需要對圖片也處理,然後在上傳第一步需要對圖片進行比例壓縮之後再進行質量壓縮,處理之後的圖片比之前的圖片會小很多,再加上框架的上傳處理,會有很好的效果,希望對你有所幫助
⑹ 非同步上傳圖片,怎麼實現表單提交,不刷新頁面,並且回顯圖片
你這是要用AJAX啊。
用JQUERY會方便一點。如果要用原生的js.
var xmlHttp=new XMLHttpRequest();
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
然後你的xmlHttp.open("POST",url);這里必須用POST。
接下來,就是xmlHttp.send(你的數據文件)
我這里是簡寫了。xmlHttp的生成在IE和其實瀏覽器下實例化是不一樣的。你可以找一下資料。
接下來,就是提交到伺服器上去了,你的程序處理保存圖片後,生成一個地址後回傳給請求的頁面。
你再xmlHttp.responseText獲取這個地址,就可以回顯了。
⑺ 求一段JS或Jquery非同步上傳圖片的代碼
圖片和文件等流媒體 上傳都是靠from表單的提交。
你可以設置一個隱藏的from表單
裡面有個<input id='file' type='file'>
選擇玩圖片之後賦值給file
然後用jquery from表單提交即可
<formid="form"runat="server"enctype="multipart/form-data">
<inputid='file'type='file'>
</from>
$.ajax({
url:'XXXX',//上傳後台路徑
data:$('#form').serialize(),
type:"POST",
success:function(){
}
});