jsp文件上傳
❶ 用jsp 怎樣實現文件上傳
你下載一個jspsmart組件,網上很容易下到,用法如下,這是我程序的相關片斷,供你參考: <%@ page import="com.jspsmart.upload.*" %>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
<%
String photoname="photoname";
// Variables
int count=0; // Initialization
mySmartUpload.initialize(pageContext); // Upload
mySmartUpload.upload();
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){ // Retreive the current file
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i); // Save it only if this file exists
if (!myFile.isMissing()) {
java.util.Date thedate=new java.util.Date();
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
photoname = df.format(thedate);
photoname +="."+ myFile.getFileExt();
myFile.saveAs("/docs/docimg/" + photoname);
count ++; } }
%>
<% String title="1";
String author="1";
String content="1";
String pdatetime="1";
String topic="1";
String imgintro="1";
String clkcount="1"; if(mySmartUpload.getRequest().getParameter("title")!=null){
title=(String)mySmartUpload.getRequest().getParameter("title");
title=new String(title.getBytes("gbk"),"ISO-8859-1");
}
if(mySmartUpload.getRequest().getParameter("author")!=null){
author=(String)mySmartUpload.getRequest().getParameter("author");
author=new String(author.getBytes("gbk"),"ISO-8859-1");
}
if(mySmartUpload.getRequest().getParameter("content")!=null){
content=(String)mySmartUpload.getRequest().getParameter("content");
content=new String(content.getBytes("gbk"),"ISO-8859-1");
}
if(mySmartUpload.getRequest().getParameter("pdatetime")!=null){
pdatetime=(String)mySmartUpload.getRequest().getParameter("pdatetime");
}
if(mySmartUpload.getRequest().getParameter("topic")!=null){
topic=(String)mySmartUpload.getRequest().getParameter("topic");
}
if(mySmartUpload.getRequest().getParameter("imgintro")!=null){
imgintro=(String)mySmartUpload.getRequest().getParameter("imgintro");
imgintro=new String(imgintro.getBytes("gbk"),"ISO-8859-1");
}
if(mySmartUpload.getRequest().getParameter("clkcount")!=null){
clkcount=(String)mySmartUpload.getRequest().getParameter("clkcount");
}
//out.println(code+name+birthday);
%>
❷ 怎麼在 jsp 頁面中上傳文件
使用jsp smartupload
示例:部分文件代碼 具體實現 找些教材
UploadServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.*;
import java.text.*;
import java.util.*;
/*******************************************************/
/* 該實例中盡可能多地用到了一些方法,在實際應用中 */
/* 我們可以根據自己的需要進行取捨! */
/*******************************************************/
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 新建一個SmartUpload對象,此項是必須的
SmartUpload myupload = new SmartUpload();
// 初始化,此項是必須的
ServletConfig config = getServletConfig();
myupload.initialize(config,request,response);
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
out.println("<h2>處理上傳的文件</h2>");
out.println("<hr>");
try{
// 限制每個上傳文件的最大長度
myupload.setMaxFileSize(1024*1024);
// 限制總上傳數據的長度
myupload.setTotalMaxFileSize(5*1024*1024);
// 設定允許上傳的文件(通過擴展名限制)
myupload.setAllowedFilesList("doc,txt,jpg,gif");
// 設定禁止上傳的文件(通過擴展名限制)
myupload.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上傳文件,此項是必須的
myupload.upload();
// 統計上傳文件的總數
int count = myupload.getFiles().getCount();
// 取得Request對象
Request myRequest = myupload.getRequest();
String rndFilename,fileExtName,fileName,filePathName,memo;
Date dt = null;
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
// 逐一提取上傳文件信息,同時可保存文件
for (int i=0;i<count;i++)
{
//取得一個上傳文件
File file = myupload.getFiles().getFile(i);
// 若文件不存在則繼續
if (file.isMissing()) continue;
// 取得文件名
fileName = file.getFileName();
// 取得文件全名
filePathName = file.getFilePathName();
// 取得文件擴展名
fileExtName = file.getFileExt();
// 取得隨機文件名
dt = new Date(System.currentTimeMillis());
Thread.sleep(100);
rndFilename= fmt.format(dt)+"."+fileExtName;
memo = myRequest.getParameter("memo"+i);
// 顯示當前文件信息
out.println("第"+(i+1)+"個文件的文件信息:<br>");
out.println(" 文件名為:"+fileName+"<br>");
out.println(" 文件擴展名為:"+fileExtName+"<br>");
out.println(" 文件全名為:"+filePathName+"<br>");
out.println(" 文件大小為:"+file.getSize()+"位元組<br>");
out.println(" 文件備注為:"+memo+"<br>");
out.println(" 文件隨機文件名為:"+rndFilename+"<br><br>");
// 將文件另存,以WEB應用的根目錄作為上傳文件的根目錄
file.saveAs("/upload/" + rndFilename,myupload.SAVE_VIRTUAL);
}
out.println(count+"個文件上傳成功!<br>");
}catch(Exception ex){
out.println("上傳文件超過了限制條件,上傳失敗!<br>");
out.println("錯誤原因:<br>"+ex.toString());
}
out.flush();
out.close();
}
}
❸ jsp 中文件上傳
給你解釋一下其中的原理你應該就明白了,前台用戶界面選擇文件後開始非同步上傳文件至伺服器端你指定的文件位置,然後伺服器端識別文件是否結束,結束了就把文件名記錄在你的資料庫中,這樣你在讀取的時候再通過伺服器文件名,將地址傳給用戶界面。大概就是這個樣子。具體的實現,可以找一下這個插件commons-fileupload jar包和commons-io jar
還有什麼其他問題可以wx找shenbeihutong,直接問我
❹ jsp如何上傳文件
只是jsp部分的話,只要在form標簽里加一個「enctype="multipart/form-data"」就好了,讀取下載的話只要弄個commons-fileupload之類的插件就很容易解決
這里是下載部分的核心代碼:
<%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %>
<%
String sUrl = (String)request.getAttribute("fileurl");
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
//設定contentDisposition為null以禁止瀏覽器自動打開文件,保證點擊鏈接後是下載文件。若不設定,則下載的文件擴展名為doc時,瀏覽器將自動用word打開它;擴展名為pdf時,瀏覽器將用acrobat打開。
su.setContentDisposition(null);
su.downloadFile(sUrl);
%>
但是歸根結底,你還是要一個存放文件路徑的資料庫啊,否則你下載時候下載地址每次都寫死或者手動輸入??如果要動態讀取的話還是要建一個存放文件路徑的資料庫的
❺ jsp頁面中如何視頻文件上傳的代碼實現
jsp 獲取視頻文件進行播放 跟html沒什麼區別 可以調用不同播放器的代碼 ,比如MEDIA播放器:
<OBJECT ID="mediaplayer" WIDTH="50%" HEIGHT="50%" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<!--播放的文件的地址-->
<param name="url" value="http://www..com"/>
<!--去除右鍵菜單-->
<param name="enableContextMenu" value="false"/>
<param name="autoStart" value="true" />
</OBJECT>
❻ jsp+servlet 怎麼實現文件上傳
你要做文件上傳吧 form表單里一定要設置這兩個值enctype="multipart/form-data" method="post"
上傳成功後會在tomcat里有那個文件 ,至於你說的要獲取io流。那就需要找到那個文件給你寫一下偽碼吧:
//獲得上傳文件的路徑
String path = getServletContext().getRealPath(webpath);
File file = new File(path);
file.getParentFile().mkdirs();
file.createNewFile();
// 獲得流
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(file);
不懂的再問我!
建議你用個上傳組件,fileupload什麼的
❼ jsp中如何增加上傳文件的功能
首先下載jspsmartupload組件 這個你自己找吧,現在發鏈接太難了。
二、將目錄jspsmartupload/wib_inf/classes中的內容拷貝到網站所在的實際目錄中的WEB-INF中(resin是這個目錄,其他的可能是classes,具體請查閱jspsmartupload/help/setup.htm)
三、假如是resin運行JSP,請在resin的conf/resin.conf中的
<web-app> 和 </web-app> 中加入:
<path-mapping url-pattern=』/upload/*』 real-path=』f:\\jsp\\jspsmartupload\\upload』/>
四、上傳界面的代碼如下:(文件名:insert.htm)
<FORM METHOD="POST" ACTION=" uploadfile.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"> <BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"> <BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"> <BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"> <BR>
主題: <input type="text" name="text1" > <br>
<INPUT type=submit value=寫 完 name=ok>
</form>
注重上面的real-path目錄
五、uploadfile.jsp的代碼如下:
<%@page contentType="text/html;charset=gb2312"
language="java"
import="com.jspsmart.upload.*"%>
<jsp:useBean id="mySmartUpload"
scope="page"
class="com.jspsmart.upload.SmartUpload" />
❽ jsp文件上傳
public class MultipartTestServlet extends HttpServlet {
public MultipartTestServlet() { //構造方法
super();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) //servlet的doPost方法處理POST請求
throws ServletException, IOException { //拋出異常
request.setCharacterEncoding("gbk"); //設置字元為GBK
RequestContext requestContext = new ServletRequestContext(request); //實例化RequestContext對象
if(FileUpload.isMultipartContent(requestContext)){
//判斷是否包含 multipart 內容
DiskFileItemFactory factory = new DiskFileItemFactory();
// 創建基於磁碟的文件工廠
factory.setRepository(new File("c:/tmp/")); // 設置臨時目錄
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("gbk");
upload.setSizeMax(2000000); //設置緩沖區大小
List items = new ArrayList();
try {
items = upload.parseRequest(request); // 得到所有的文件
} catch (FileUploadException e1) {
System.out.println("文件上傳發生錯誤" + e1.getMessage());
}
Iterator it = items.iterator();
while(it.hasNext()){
FileItem fileItem = (FileItem) it.next();
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName() + " " + fileItem.getName() + " " + new String(fileItem.getString().getBytes("iso8859-1"), "gbk")); //獲得表單中域的名字。獲得從瀏覽器中取得的文件全路徑
}else{
System.out.println(fileItem.getFieldName() + " " +
fileItem.getName() + " " +
fileItem.isInMemory() + " " +
fileItem.getContentType() + " " +
fileItem.getSize());
if(fileItem.getName()!=null && fileItem.getSize()!=0){
// 瀏覽器中取得的文件全路徑不為空 大小 不為0 則寫入
File fullFile = new File(fileItem.getName());
File newFile = new File("c:/temp/" + fullFile.getName());
try {
fileItem.write(newFile);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("文件沒有選擇 或 文件內容為空");
}
}
}
}
}
}
❾ jsp文件上傳如何規定大小
這是jspsmartupload本身一個缺陷!用jspsmartupload上傳東西,當大小超過了某個值後就無法上傳了.也就報出了以下異常:
java.lang.OutOfMemoryError: Java heap space
如果是上傳小的東西,用這個jspsmartupload這個組件足夠了,但是上傳大的文件就不行了.建議用commonupload組件.
究其原因在jspsmartupload源碼中有:
m_totalBytes = m_request.getContentLength();
m_binArray = new byte[m_totalBytes];
int j;
for(; i < m_totalBytes; i += j)
....
而m_request就是HttpServletRequest,它一次將文件流全部讀入內存中,也就造成m_totalBytes超級的大,而在new byte[m_totalBytes];時就在內存在分配了一個超大的空間,內存受不了也就直接報異常了.所以除非改掉這種方式的上傳否則是沒法解決這個問題的.
而commonupload就不一般了,它可以設置一次讀取文件最大部分是多少,比部文件有200Mb,你設置一次讀取文件的大小是4MB,那麼也就超過了一次讀4MB到內存,然後就此4MB的部分寫入硬碟中的臨時文件中,然後再讀取下面的4MB,接著把內存的東西刷到硬碟中.也就不會一次讀入內存的東西太多,而造成內存的瀉漏.
以下是使用commonupload上傳的部分代碼
String fileName = " ";
String appPath = request.getSession().getServletContext().getRealPath("/") ;
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(cacheSize); //緩沖大小
File temFile = new File(appPath+tempFileFold); //超過緩沖小放在臨時文件夾,再一步一步上傳
if(!temFile.exists()){
temFile.mkdirs();
}
factory.setRepository(temFile);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxFileSize); //最大大小
List fileList = null ;
try {
fileList = upload.parseRequest(request);
} catch (FileUploadException e) {
if (e instanceof SizeLimitExceededException) {
System.out.println("超過大小了,返回!");
double maxSize = maxFileSize/(1024.0*1024.0);
if(maxSize>1.0){
float fileSize = Math.round(maxSize*1000)/1000;
request.setAttribute("message", MessageResource.readByString("file_size_overflow")+fileSize+"M");
}else{
double kMaxSize = maxFileSize/(1024.0);
float fileSize = Math.round(kMaxSize*100)/100;
request.setAttribute("message", MessageResource.readByString("file_size_overflow")+fileSize+"K");
}
request.setAttribute("page", request.getParameter("failpage"));
System.out.println("page:"+request.getAttribute("page")+" messgae:"+request.getAttribute("message"));
return "";
}
e.printStackTrace();
}
if (fileList == null || fileList.size() == 0) {
System.out.println("空文件,返回!");
return "";
}
// 得到所有上傳的文件
Iterator fileItr = fileList.iterator();
// 循環處理所有文件
while (fileItr.hasNext()) {
FileItem fileItem = null;
String path = null;
long size = 0;
// 得到當前文件
fileItem = (FileItem) fileItr.next();
// 忽略簡單form欄位而不是上傳域的文件域(<input type="text" />等)
if (fileItem == null || fileItem.isFormField()) {
continue;
}
// 得到文件的完整路徑
path = fileItem.getName();
// 得到文件的大小
size = fileItem.getSize();
if ("".equals(path) || size == 0) {
System.out.println("空文件2,返回!");
return "" ;
}
// 得到去除路徑的文件名
String t_name = path.substring(path.lastIndexOf("\\") + 1);
// 得到文件的擴展名(無擴展名時將得到全名)
String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
String[] allowFiles = allowedFilesList.split(",");
boolean isPermited = false ;
for(String allowFile:allowFiles){
if(t_ext.equals(allowFile)){
isPermited = true ;
break ;
}
}
if(!isPermited){
request.setAttribute("message", t_ext+MessageResource.readByString("file_format_error")+allowedFilesList);
request.setAttribute("page", request.getParameter("failpage"));
System.out.println(t_ext+"文件格式不合法,合法文件格式為:"+allowedFilesList);
return "" ;
}
long now = System.currentTimeMillis();
// 根據系統時間生成上傳後保存的文件名
String newFileName = String.valueOf(now)+"."+t_ext;
// 保存的最終文件完整路徑,保存在web根目錄下的ImagesUploaded目錄下
File desctemFile = new File(appPath + fileLocationFold); //超過緩沖小放在臨時文件夾,再一步一步上傳
if(!desctemFile.exists()){
desctemFile.mkdirs();
}
String u_name = appPath + fileLocationFold
+ newFileName ;
fileName = fileLocationFold+newFileName ;
try {
fileItem.write(new File(u_name));
} catch (Exception e) {
e.printStackTrace();
}
}
return fileName ;
❿ 怎麼在jsp頁面實現文件上傳呢
上傳文件示例:
<form action="doUpload.jsp" method="post" enctype="multipart/form-data">
<%-- 類型enctype用multipart/form-data,這樣可以把文件中的數據作為流式數據上傳,不管是什麼文件類型,均可上傳。--%>
請選擇要上傳的文件<input type="file" name="upfile" size="50">
<input type="submit" value="提交">
</form>
</body>
</html>