當前位置:首頁 » 文件管理 » 圖片批量上傳代碼

圖片批量上傳代碼

發布時間: 2022-07-09 21:30:51

A. ASP如何實現批量上傳圖片,並在資料庫中有記錄

<%

dim conn

dim rs

dim rs2


set conn=server.createobject("adodb.connection")

conn.connectionstring="Provider = Microsoft.Jet.OLEDB.4.0;Data Source="&server.mapPath("db.mdb")

conn.open


formsize=request.totalbytes


if formsize<>0 then '這里只判斷了是否等於0,等於0就說明沒有傳過來數據。以後可以要多做點判斷,比如限制圖片大小的時候要判斷一下。

formdata=request.binaryread(formsize)


bncrlf=chrB(13)&chrB(10)

divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)

datastart=instrb(formdata,bncrlf&bncrlf)+4

dataend=instrb(datastart+1,formdata,divider)-datastart

mydata=midb(formdata,datastart,dataend)'這里也要檢測一下,就是檢測這個數據裡面是不是有病毒詞彙之類的,這個可以在網上查一下病毒裡面可能出現的詞語,如果有這些詞語,直接在這里就把這個mydata銷毀,然後response.redirect "xxx.asp",有病毒趕快跳轉,不要處理帶病毒的數據。


set rs=server.createobject("ADODB.recordset")

sql="select * from imgurl"

rs.open sql,conn,1,3

rs.addnew

rs("img").AppendChunk myData'把這個圖片的二進制數據新增到img欄位裡面。

tpm=replace(now(),"/","_") '用的日期做名字,日期裡面有"/"," ",":"之類的東西,這些東西全部替換成"_"。

tpm=replace(tpm,":","_")

tpm=replace(tpm," ","_")

rs("圖片名")=tpm

rs.update


Set MyStream=Server.CreateObject("Adodb.Stream")

MyStream.Type=1

MyStream.Open

MyStream.Write rs("img").getChunk(8000000)

MyStream.SaveToFile server.mappath("pic/"&tpm&".jpg")

MyStream.close

set MyStream=nothing


rs("img")="" '把access裡面的二進制圖片內容刪除,只保留圖片的名字。

rs.update


rs.close

set rs=nothing


response.write "<script>alert(""上傳成功"");location.href=""upload.asp"";</script>"

end if

%>


<form action="upload.asp" method="post" enctype="multipart/form-data">

<input type="file" name="imgurl">

<input type="submit" name="ok" value="上傳">

</form>



<!--------------下面是把圖片顯示出來------------------->



<div style="margin-top:2em;"><!--------------創建一個div把圖片顯示區域定位一下------------------->

<%

set rs2=server.createobject("ADODB.recordset")

sql2="select * from imgurl order by id desc"

rs2.open sql2,conn,1,1

for s=1 to rs2.recordcount

if not rs2.eof and not rs2.bof then

%>

<img src="pic/<%=rs2("圖片名")%>.jpg">

<%

else

exit for

end if

rs2.movenext

next

rs2.close

set rs2=nothing

%>

</div>

<%

conn.Close

Set conn = Nothing

%>


<!--至於刪除圖片,這個就很簡單了,圖片的名字都已經進access裡面了,直接讀一下access裡面的名字,讀了一個名字,然後用fso在pic文件夾裡面去刪除對應的圖片文件就可以了。--->

效果圖:網頁鏈接

B. 圖片批量上傳web代碼

用這個插件吧,jspsmartupload
upload.html頁面
<html>
<head>
<title>文件上傳</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<p></p>
<p align="center">上傳文件選擇</p>
<FORM METHOD="POST" ACTION="jsp/do_upload.jsp"
ENCTYPE="multipart/form-data">
<input type="hidden" name="TEST" value="good">
<table width="75%" border="1" align="center">
<tr>
<td><div align="center">1、
<input type="FILE" name="FILE1" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">2、
<input type="FILE" name="FILE2" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">3、
<input type="FILE" name="FILE3" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">4、
<input type="FILE" name="FILE4" size="30">
</div></td>
</tr>
<tr>
<td><div align="center">
<input type="submit" name="Submit" value="上傳它!">
</div></td>
</tr>
</table>
</FORM>
</body>
</html>

do_upload.jsp頁面

<%@ page contentType="text/html; charset=gb2312" language="java"
import="java.util.*,com.jspsmart.upload.*" errorPage="" %>
<html>
<head>
<title>文件上傳處理頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
// 新建一個SmartUpload對象
SmartUpload su = new SmartUpload();
// 上傳初始化
su.initialize(pageContext);
// 設定上傳限制
// 1.限制每個上傳文件的最大長度。
// su.setMaxFileSize(10000);
// 2.限制總上傳數據的長度。
// su.setTotalMaxFileSize(20000);
// 3.設定允許上傳的文件(通過擴展名限制),僅允許doc,txt文件。
// su.setAllowedFilesList("doc,txt");
// 4.設定禁止上傳的文件(通過擴展名限制),禁止上傳帶有exe,bat,
jsp,htm,html擴展名的文件和沒有擴展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上傳文件
su.upload();
// 將上傳文件全部保存到指定目錄
int count = su.save("/upload");
out.PRintln(count+"個文件上傳成功!<br>");

// 利用Request對象獲取參數之值
out.println("TEST="+su.getRequest().getParameter("TEST")
+"<BR><BR>");

// 逐一提取上傳文件信息,同時可保存文件。
for (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file = su.getFiles().getFile(i);

// 若文件不存在則繼續
if (file.isMissing()) continue;

// 顯示當前文件信息
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表單項名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件長度(Size)</TD><TD>" +
file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件擴展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");

// 將文件另存
// file.saveAs("/upload/" + myFile.getFileName());
// 另存到以WEB應用程序的根目錄為文件根目錄的目錄下
// file.saveAs("/upload/" + myFile.getFileName(),
su.SAVE_VIRTUAL);
// 另存到操作系統的根目錄為文件根目錄的目錄下
// file.saveAs("c:\\temp\\" + myFile.getFileName(),
su.SAVE_PHYSICAL);

}
%>
</body>
</html>

參考資料來源:http://www.knowsky.com/3136.html

呵呵 正好前端時間我 也用到了

C. android如何實現圖片批量上傳

首先,以下架構下的批量文件上傳可能會失敗或者不會成功:
1.android客戶端+springMVC服務端:服務端採用org.springframework.web.multipart.MultipartHttpServletRequest作為批量上傳接收類,這種搭配下的批量文件上傳會失敗,最終服務端只會接受到一個文件,即只會接受到第一個文件。可能因為MultipartHttpServletRequest對servlet原本的HttpServletRequest類進行封裝,導致批量上傳有問題。
2.android客戶端+strutsMVC服務端:
上傳成功的方案:
採用android客戶端+Servlet(HttpServletRequest)進行文件上傳。
Servlet端代碼如下:

[java] view plainprint?
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try
{
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
if (item.isFormField())
{
System.out.println("表單參數名:" + item.getFieldName() + ",表單參數值:" + item.getString("UTF-8"));
}
else
{
if (item.getName() != null && !item.getName().equals(""))
{
System.out.println("上傳文件的大小:" + item.getSize());
System.out.println("上傳文件的類型:" + item.getContentType());
// item.getName()返回上傳文件在客戶端的完整路徑名稱
System.out.println("上傳文件的名稱:" + item.getName());

File tempFile = new File(item.getName());
// 上傳文件的保存路徑
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上傳文件成功!");
} else
{
request.setAttribute("upload.message", "沒有選擇上傳文件!");
}
}
}
}
catch (FileUploadException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
request.setAttribute("upload.message", "上傳文件失敗!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);

android端代碼如下:

[java] view plainprint?
public class SocketHttpRequester {
/**
*多文件上傳
* 直接通過HTTP協議提交數據到伺服器,實現如下面表單提交功能:
* <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data">
<INPUT TYPE="text" NAME="name">
<INPUT TYPE="text" NAME="id">
<input type="file" name="imagefile"/>
<input type="file" name="zip"/>
</FORM>
* @param path 上傳路徑(註:避免使用localhost或127.0.0.1這樣的路徑測試,因為它會指向手機模擬器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083這樣的路徑測試)
* @param params 請求參數 key為參數名,value為參數值
* @param file 上傳文件
*/
public static boolean post(String path, Map<String, String> params, FormFile[] files) throws Exception{
final String BOUNDARY = "---------------------------7da2137580612"; //數據分隔線
final String endline = "--" + BOUNDARY + "--\r\n";//數據結束標志

int fileDataLength = 0;
for(FormFile uploadFile : files){//得到文件類型數據的總長度
StringBuilder fileExplain = new StringBuilder();
fileExplain.append("--");
fileExplain.append(BOUNDARY);
fileExplain.append("\r\n");
fileExplain.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileExplain.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
fileExplain.append("\r\n");
fileDataLength += fileExplain.length();
if(uploadFile.getInStream()!=null){
fileDataLength += uploadFile.getFile().length();
}else{
fileDataLength += uploadFile.getData().length;
}
}
StringBuilder textEntity = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {//構造文本類型參數的實體數據
textEntity.append("--");
textEntity.append(BOUNDARY);
textEntity.append("\r\n");
textEntity.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");
textEntity.append(entry.getValue());
textEntity.append("\r\n");
}
//計算傳輸給伺服器的實體數據總長度
int dataLength = textEntity.toString().getBytes().length + fileDataLength + endline.getBytes().length;

URL url = new URL(path);
int port = url.getPort()==-1 ? 80 : url.getPort();
Socket socket = new Socket(InetAddress.getByName(url.getHost()), port);
OutputStream outStream = socket.getOutputStream();
//下面完成HTTP請求頭的發送
String requestmethod = "POST "+ url.getPath()+" HTTP/1.1\r\n";
outStream.write(requestmethod.getBytes());
String accept = "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
outStream.write(accept.getBytes());
String language = "Accept-Language: zh-CN\r\n";
outStream.write(language.getBytes());
String contenttype = "Content-Type: multipart/form-data; boundary="+ BOUNDARY+ "\r\n";
outStream.write(contenttype.getBytes());
String contentlength = "Content-Length: "+ dataLength + "\r\n";
outStream.write(contentlength.getBytes());
String alive = "Connection: Keep-Alive\r\n";
outStream.write(alive.getBytes());
String host = "Host: "+ url.getHost() +":"+ port +"\r\n";
outStream.write(host.getBytes());
//寫完HTTP請求頭後根據HTTP協議再寫一個回車換行
outStream.write("\r\n".getBytes());
//把所有文本類型的實體數據發送出來
outStream.write(textEntity.toString().getBytes());
//把所有文件類型的實體數據發送出來
for(FormFile uploadFile : files){
StringBuilder fileEntity = new StringBuilder();
fileEntity.append("--");
fileEntity.append(BOUNDARY);
fileEntity.append("\r\n");
fileEntity.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");
fileEntity.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");
outStream.write(fileEntity.toString().getBytes());
if(uploadFile.getInStream()!=null){
byte[] buffer = new byte[1024];
int len = 0;
while((len = uploadFile.getInStream().read(buffer, 0, 1024))!=-1){
outStream.write(buffer, 0, len);
}
uploadFile.getInStream().close();
}else{
outStream.write(uploadFile.getData(), 0, uploadFile.getData().length);
}
outStream.write("\r\n".getBytes());
}
//下面發送數據結束標志,表示數據已經結束
outStream.write(endline.getBytes());

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
if(reader.readLine().indexOf("200")==-1){//讀取web伺服器返回的數據,判斷請求碼是否為200,如果不是200,代表請求失敗
return false;
}
outStream.flush();
outStream.close();
reader.close();
socket.close();
return true;
}

/**
*單文件上傳
* 提交數據到伺服器
* @param path 上傳路徑(註:避免使用localhost或127.0.0.1這樣的路徑測試,因為它會指向手機模擬器,你可以使用http://www.itcast.cn或http://192.168.1.10:8080這樣的路徑測試)
* @param params 請求參數 key為參數名,value為參數值
* @param file 上傳文件
*/
public static boolean post(String path, Map<String, String> params, FormFile file) throws Exception{
return post(path, params, new FormFile[]{file});
}
}

D. asp如何實現圖片和視頻批量上傳

ASP批量上傳圖片代碼風聲無組件上傳類'上傳界面 up.asp<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><!--#include file="../Connections/conn.asp" --><%
'主菜單
Dim zpmenurs
Dim zpmenurs_numRowsSet zpmenurs = Server.CreateObject("ADODB.Recordset")
zpmenurs.ActiveConnection = MM_conn_STRING
zpmenurs.Source = "SELECT * FROM menu_2 WHERE menu=3"
zpmenurs.CursorType = 0
zpmenurs.CursorLocation = 2
zpmenurs.LockType = 1
zpmenurs.Open()zpmenurs_numRows = 0
%><%'次級菜單
Dim zpchildrs
Dim zpchildrs_numRowsSet zpchildrs = Server.CreateObject("ADODB.Recordset")
zpchildrs.ActiveConnection = MM_conn_STRING
zpchildrs.Source = "SELECT * FROM menu_2child"
zpchildrs.CursorType = 0
zpchildrs.CursorLocation = 2
zpchildrs.LockType = 1
zpchildrs.Open()zpchildrs_numRows = 0
%>//連動菜單腳本 如果不做連動菜單可以刪除//////////////////////////////////////////-------------開始----------------------------------------------------------------------
<SCRIPT language=javascript1.2>
function showsubmenu(sid)
{
whichel = eval("submenu" + sid);
if (whichel.style.display == "none")
{
eval("submenu" + sid + ".style.display='';");
}
else
{
eval("submenu" + sid + ".style.display='none';");
}
}
</SCRIPT><SCRIPT language=JavaScript type=text/javascript>
<!--var arrDynaList = new Array();
var arrDL1 = new Array();arrDL1[1] = "mainmenu"; // Name of parent list box
arrDL1[2] = "picform1"; // Name of form containing parent list box
arrDL1[3] = "submenu"; // Name of child list box
arrDL1[4] = "picform1"; // Name of form containing child list box
arrDL1[5] = arrDynaList;

<%
Dim txtDynaListRelation, txtDynaListLabel, txtDynaListValue, = "menu_father" // Name of recordset field relating to parent
txtDynaListLabel = "menu_child" // Name of recordset field for child Item Label
txtDynaListValue = "menu_child" // Name of recordset field for child Value
Set oDynaListRS = zpchildrs // Name of child list box recordset

Dim varDynaList
varDynaList = -1Dim varMaxWidth
varMaxWidth = "1"Dim varCheckGroup
varCheckGroup = oDynaListRS.Fields.Item(txtDynaListRelation).ValueDim varCheckLength
varCheckLength = 0Dim varMaxLength
varMaxLength = 0While (NOT oDynaListRS.EOF)If (varCheckGroup <> oDynaListRS.Fields.Item(txtDynaListRelation).Value) Then
If (varCheckLength > varMaxLength) Then
varMaxLength = varCheckLength
End If
varCheckLength = 0
End If
%>
arrDynaList[<%=(varDynaList+1)%>] = "<%=(oDynaListRS.Fields.Item(txtDynaListRelation).Value)%>"
arrDynaList[<%=(varDynaList+2)%>] = "<%=(oDynaListRS.Fields.Item(txtDynaListLabel).Value)%>"
arrDynaList[<%=(varDynaList+3)%>] = "<%=(oDynaListRS.Fields.Item(txtDynaListValue).Value)%>"
<%
If (len(oDynaListRS.Fields.Item(txtDynaListLabel).Value) > len(varMaxWidth)) Then
varMaxWidth = oDynaListRS.Fields.Item(txtDynaListLabel).Value
End If
varCheckLength = varCheckLength + 1
varDynaList = varDynaList + 3
oDynaListRS.MoveNext()
WendIf (varCheckLength > varMaxLength) Then
varMaxLength = varCheckLength
End If
%>//-->
</SCRIPT><SCRIPT language=JavaScript type=text/javascript>
<!--
function setDynaList(arrDL){var oList1 = document.forms[arrDL[2]].elements[arrDL[1]];
var oList2 = document.forms[arrDL[4]].elements[arrDL[3]];
var arrList = arrDL[5];

clearDynaList(oList2);

if (oList1.selectedIndex == -1){
oList1.selectedIndex = 0;
}populateDynaList(oList2, oList1[oList1.selectedIndex].value, arrList);
return true;
}

function clearDynaList(oList){for (var i = oList.options.length; i >= 0; i--){
oList.options[i] = null;
}

oList.selectedIndex = -1;
}

function populateDynaList(oList, nIndex, aArray){for (var i = 0; i < aArray.length; i= i + 3){
if (aArray[i] == nIndex){
oList.options[oList.options.length] = new Option(aArray[i + 1], aArray[i + 2]);
}
}if (oList.options.length == 0){
oList.options[oList.options.length] = new Option("[none available]",0);
}

oList.selectedIndex = 0;
}function Kermy_JS(jsStr) {
return eval(jsStr)
}function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</SCRIPT>-------------------------------連動菜單結束-----------------------------------//以下為上傳界面==============================================<TABLE borderColor=#0099ff height=80 cellSpacing=1 cellPadding=0 width="100%" bgColor=#0099ff border=0>
<TBODY>
<TR>
<TD vAlign=center align=left width="15%" bgColor=#ffffff height=37>選擇類型:</TD>
<TD vAlign=center align=left bgColor=#ffffff colSpan=2>添加具體項目:<SELECT id=mainmenu onchange="Kermy_JS('setDynaList(arrDL1)')" name=mainmenu ?> <OPTION value="<%=(zpmenurs.Fields.Item(" selected menu_father?).Value)%>"></OPTION></SELECT><SELECT id=submenu name=submenu></SELECT><% '上傳文件個數
num=1

if request.querystring("number")<>"" Then

num=Trim(request.querystring("number"))end if
%>上傳文件數 <SELECT onchange="MM_jumpMenu('parent',this,0)" name=menu1> <OPTION selected>== 請選擇==</OPTION> <OPTION value=?number=1>1</OPTION> <OPTION value="?number=<%=i%>"></OPTION></SELECT> <INPUT id=num type=hidden value="<%=num %>" name=num></TD></TR><%
for j=1 to num
%>
<TR>
<TD vAlign=center align=left bgColor=#ffffff>上傳圖片<%= j %>:</TD>
<TD vAlign=center align=left bgColor=#ffffff colSpan=2><INPUT id=pic style="WIDTH: 100px" type=file onchange=null.value=no name=pic> </TD></TR><% next %>
<TR>
<TD vAlign=center align=left bgColor=#ffffff> </TD>
<TD vAlign=center align=left bgColor=#ffffff colSpan=2><INPUT type=submit value=提交 name=Submit> <LABEL><INPUT type=reset value=重置 name=Submit2> </LABEL></TD></TR>
<TR>
<TD height=1></TD>
<TD width="34%"></TD>
<TD width="51%"></TD></TR></TBODY></TABLE><%
zpmenurs.Close()
Set zpmenurs = Nothing
%><%
zpchildrs.Close()
Set zpchildrs = Nothing
%>up.asp 結束

E. java圖片批量上傳代碼

用struts也可以實現 多文件上傳
下面是我寫的代碼,作為參考!

/*文件目錄*/
public static String [] fileArray={
"logo.png",
"index.swf",
"OEMInfo.txt",
"favicon.ico"};

/**
* @author Caoshun
* @see 接收並保存文件
* */
public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){
String fileName="";
//獲取表單中的文件資源
Hashtable<Object, Object> files = form.getMultipartRequestHandler().getFileElements();
//遍歷文件,並且循環保存
//當前處理文件序號
int file_num=1;
for (Enumeration<Object> e = files.keys(); e.hasMoreElements();) {

/*根據處理的當前文件下標,確定文件名*/
fileName=fileArray[file_num-1];

FormFile file = (FormFile) files.get((String) e.nextElement());
if (file != null && file.getFileSize() > 0) {
try {
//使用formfile.getInputStream()來獲取一個文件的輸入流進行保存。
//文件名
//String fileName = file.getFileName();
//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);
//文件大小
//int fileSize = file.getFileSize();
//文件流
InputStream is = file.getInputStream();
//將輸入流保存到文件
//String rootPath = this.servlet.getServletContext().getRealPath("files");

//往cn中寫入
File rf = new File(rootPath1);
FileOutputStream fos = null;
fos = new FileOutputStream(new File(rf, fileName));
byte[] b = new byte[10240];
int real = 0;
real = is.read(b);
while (real > 0) {
fos.write(b, 0, real);
real = is.read(b);
}

//往en中寫入
File rf2 = new File(rootPath2);
InputStream is2 = file.getInputStream();
FileOutputStream fos2 = null;
fos2 = new FileOutputStream(new File(rf2, fileName));
byte[] b2 = new byte[10240];
int real2 = 0;
real2 = is2.read(b2);
while (real2 > 0) {
fos2.write(b2, 0, real2);
real2 = is2.read(b2);
}

//關閉文件流
fos.close();
is.close();
fos2.close();
is2.close();
} catch (RuntimeException e1) {
e1.printStackTrace();
} catch (Exception ee) {
ee.printStackTrace();
}
file.destroy();

}
file_num++;
}
}

F. php,批量上傳圖片方法不要插件類的,也不要flash的。

將表單域中的文件域的name屬性設置為一樣並且以數組形式提交。比如
name="file[]"
這樣,你用php獲取他的值,這個值就是多維數組
比如
$FILES = $_FILES['file'];
這個時候,你這個變數$FILES就是一個多維數組了
然後用foeach循環遍歷這個數組即可
foreach ( $FILES as $file ) {

這里之間的代碼,就和你上傳單張圖片一樣的代碼就行
比如獲取上傳圖片的類型: $Type = $file['type']

}

php中
$_GET $_POST $_REQUEST $_FILES等都是全局變數,而且都是數組形式
而數組和foreach循環搭配,那是很完美的,有這兩個來搭配,就不難處理數組了,當然,你所謂的多圖片上傳,也就不是問題的問題了

G. 菜鳥一隻,求PHP批量上傳圖片的整個代碼。

這是我寫的圖片批量上傳的類:你直接調用就行了:
<?php
function upload($fileName,$filePath)
{
//判斷該文件是否是用戶根據POST方式提交到伺服器的上傳文件

foreach($_FILES[$fileName]['tmp_name'] as $k=>$v)
{
if($_FILES[$fileName]['name'][$k]!="")
{

$result=check($_FILES[$fileName]['size'][$k],$_FILES[$fileName]['type'][$k],$_FILES[$fileName]['name'][$k]);
if($result['error']==1)
{
echo $result['msg']."<br>";
echo "出錯文件:".$result['name']."<br>";
}

else
{

$arrTT=explode(".",$_FILES[$fileName]['name'][$k]);
$extName=$arrTT[count($arrTT)-1];
$NewName=sha1(microtime()).".".$extName;
if(move_uploaded_file($v,$filePath.$NewName));
$arrWW[]=$NewName;
}
}
}
return $arrWW;

}
function check($size,$types,$name)
{
if($size>=5242880)
{
$result['msg']='文件過大!';
$result['error']=1;
$result['name']=$name;
}
$arrType=array('image/pjpeg','image/gif','image/x-png','audio/mp3','application/msword','application/vnd.ms_excel','application/octet-stream','application/vnd.ms-powerpoint');
if(!in_array($types,$arrType))
{
$result['msg']='文件類型不匹配!';
$result['error']=1;
$result['name']=$name;
}
return $result;

}

?>
其實,有很多php的圖片上傳的類,你可以去下載幾個,看看怎麼調用就行了

H. 用java完成圖片多張批量上傳的功能,還有就是後台的應該怎麼處理上傳的照片。

環境准備

1. 下載並安裝Tomcat(已經有很多關於Tomcat安裝以及使用的文章,在這里不再介紹);

2. 下載File upload的jar包commons-fileupload-1.0-beta-1.jar,並將該文件拷貝到{$TOMCAT}/common/lib目錄下(其中{$TOMCAT}為Tomcat的安裝目錄);

3. 由於Fileupload子項目同時要用到另外一個項目commons-Beanutils,所以必須下載Beanutils,並將解壓後的文件commons-beanutils.jar拷貝到{$TOMCAT}/common/lib目錄下。

開發文件上傳頁面

文件上傳的界面如圖1所示。為了增加效率我們設計了三個文件域,同時上傳三個文件。
圖1 文件上傳界面

頁面的HTML代碼如下:

<html>
<head>
<title>文件上傳演示</title>
</head>
<body bgcolor=「#FFFFFF」text=「#000000」 leftmargin=「0」topmargin=「40」marginwidth=「0」 marginheight=「0」>
<center>
<h1>文件上傳演示</h1>
<form name=「uploadform」method=「POST」 action=「save.jsp」ENCTYPE=「multipart/form-data」>
<table border=「1」width=「450」cellpadding=「4」 cellspacing=「2」bordercolor=「#9BD7FF」>
<tr><td width=「100%」colspan=「2」>
文件1:<input name=「file1」size=「40」type=「file」>
</td></tr>
<tr><td width=「100%」colspan=「2」>
文件2:<input name=「file2」size=「40」type=「file」>
</td></tr>
<tr><td width=「100%」colspan=「2」>
文件3:<input name=「file3」size=「40」type=「file」>
</td></tr>
</table>
<br/><br/>
<table>
<tr><td align=「center」><input name=「upload」 type=「submit」value=「開始上傳」/></td></tr>
</table>
</form>
</center>
</body>
</html>

代碼中要特別注意的是黑體處。必須保證表單的ENCTYPE屬性值為multipart/form-data,這樣瀏覽器才能正確執行上傳文件的操作。

處理上傳文件信息

由於本文主要是講述如何使用Commons-fileupload,所以為了便於修改、調試,上傳文件的保存使用一個JSP文件來進行處理。我們將瀏覽器上傳來的所有文件保存在一個指定目錄下並在頁面上顯示所有上傳文件的詳細信息。保存頁面處理結果見圖2所示。
圖2 保存頁面

下面來看看save.jsp的代碼:

<%
/**
* 演示文件上傳的處理
* @author <a href=「mailto:[email protected]」>Winter Lau</a>
* @version $Id: save.jsp,v 1.00 2003/03/01 10:10:15
*/
%>
<%@ page language=「java」contentType=「text/html;charset=GBK」%>
<%@ page import=「java.util.*」%>
<%@ page import=「org.apache.commons.fileupload.*」%>
<html>
<head>
<title>保存上傳文件</title>
</head>
<%
String msg = 「」;
FileUpload fu = new FileUpload();
// 設置允許用戶上傳文件大小,單位:位元組
fu.setSizeMax(10000000);
// maximum size that will be stored in memory?
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath(「C:\\TEMP」);
//開始讀取上傳信息
List fileItems = fu.parseRequest(request);
%>
<body bgcolor=「#FFFFFF」text=「#000000」 leftmargin=「0」topmargin=「40」marginwidth=「0」 marginheight=「0」>
<font size=「6」color=「blue」>文件列表:</font>
<center>
<table cellpadding=0 cellspacing=1 border=1 width=「100%」>
<tr>
<td bgcolor=「#008080」>文件名</td>
<td bgcolor=「#008080」>大小</td>
</tr>
<%
// 依次處理每個上傳的文件
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//忽略其他不是文件域的所有表單信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals(「」)) && size==0)
continue;
%>
<tr>
<td><%=item.getName()%></td>
<td><%=item.getSize()%></td>
</tr>
<%
//保存上傳的文件到指定的目錄
name = name.replace(『:』,『_』);
name = name.replace(『\\』,『_』);
item.write(「F:\\」+ name);
}
}
%>
</table>

<br/><br/>
<a href=「upload.html」>返回上傳頁面</a>
</center>
</body>
</html>

在這個文件中需要注意的是FileUpload對象的一些參數值的意義,如下面代碼所示的三個參數sizeMax、sizeThreshold、repositoryPath:

FileUpload fu = new FileUpload();
// 設置允許用戶上傳文件大小,單位:位元組
fu.setSizeMax(10000000);
// maximum size that will be stored in memory?
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath(「C:\\TEMP」);

這3個參數的意義分別為:

SizeMax 用來設置上傳文件大小的最大值,一旦用戶上傳的文件大小超過該值時將會拋出一個FileUploadException異常,提示文件太大;

SizeThreshold 設置內存中緩沖區的大小,一旦文件的大小超過該值的時候,程序會自動將其它數據存放在repositoryPath指定的目錄下作為緩沖。合理設置該參數的值可以保證伺服器穩定高效的運行;

RepositoryPath 指定緩沖區目錄。

使用注意事項
從實際應用的結果來看該模塊能夠穩定高效的工作。其中參數SizeThreshold的值至關重要,設置太大會佔用過多的內存,設置太小會頻繁使用硬碟作為緩沖以致犧牲性能。因此,設置該值時要根據用戶上傳文件大小分布情況來設定。例如大部分文件大小集中在100KB左右,則可以使用100KB作為該參數的值,當然了再大就不合適了。使用commons-fileupload來處理HTTP文件上傳的功能模塊很小,但是值得研究的東西很多。

I. 求java圖片批量上傳,改小,加水印處理代碼,50分相送

//添加水印,filePath 源圖片路徑, watermark 水印圖片路徑
public static boolean createMark(String filePath,String watermark) {
ImageIcon imgIcon=new ImageIcon(filePath);
Image theImg =imgIcon.getImage();
ImageIcon waterIcon=new ImageIcon(watermark);
Image waterImg =waterIcon.getImage();
int width=theImg.getWidth(null);
int height= theImg.getHeight(null);
BufferedImage bimage = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D g=bimage.createGraphics( );
g.setColor(Color.red);
g.setBackground(Color.white);
g.drawImage(theImg, 0, 0, null );
g.drawImage(waterImg, 100, 100, null );
g.drawString("12233",10,10); //添加文字
g.dispose();
try{
FileOutputStream out=new FileOutputStream(filePath);
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(50f, true);
encoder.encode(bimage, param);
out.close();
}catch(Exception e){ return false; }
return true;
}

熱點內容
伺服器兩條寬頻如何疊加網速 發布:2025-01-18 08:52:17 瀏覽:730
oracle存儲過程集合 發布:2025-01-18 08:42:39 瀏覽:884
洋蔥數學緩存 發布:2025-01-18 08:38:36 瀏覽:918
電影的文件夾都是 發布:2025-01-18 08:21:49 瀏覽:835
post提交php 發布:2025-01-18 08:21:42 瀏覽:460
如何禁止寫入文件夾 發布:2025-01-18 08:21:04 瀏覽:363
360雲盤等待上傳 發布:2025-01-18 08:21:03 瀏覽:796
安卓手機怎麼設置壁紙 發布:2025-01-18 08:20:23 瀏覽:319
如何關閉密碼鎖 發布:2025-01-18 08:18:51 瀏覽:859
我的電腦ftp打不開 發布:2025-01-18 08:18:05 瀏覽:513