java附件上傳,如何以附件的形式上傳

本文目錄一覽:

上傳附件 java 代碼

SmartUpload上傳圖片

記得下載jar包啊

別忘了把名改成smartUpload.jar

Utility類:

package com.tidyinfo.utils;

import java.util.Calendar;

public class Utility {

//生成形如:\2006\08\18的路徑

private String path;

//生成形如: 20060818125012的唯一id號

private String id;

//生成形如:/2006/08/18的路徑

private String url;

private String hour;

private String year;

private String month;

private String day;

private String minate;

private String second;

/** Creates a new instance of Utility */

public Utility() {

this.year =new Integer(Calendar.getInstance().get(Calendar.YEAR)).toString();

this.month = parseToString(Calendar.getInstance().get(Calendar.MONTH)+1);

this.day = parseToString(Calendar.getInstance().get(Calendar.DAY_OF_MONTH));

this.hour = parseToString(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));

this.minate = parseToString(Calendar.getInstance().get(Calendar.MINUTE));

this.second = parseToString(Calendar.getInstance().get(Calendar.SECOND));

this.setId();

this.setPath();

this.setUrl();

}

protected String parseToString(int i){

return i10?(“0″+i):new Integer(i).toString();

}

public String getId(){

return this.id;

}

public String getPath(){

return this.path;

}

public String getUrl(){

return this.url;

}

protected void setId(){

this.id = this.year+this.month+this.day+this.hour+this.minate+this.second;

}

protected void setPath(){

this.path = “\\”+this.year + “\\” + this.month + “\\” +

this.day ;

}

protected void setUrl(){

this.url = this.path.replace(‘\\’,’/’);

}

}

Action:(根據不同情況要更改相關代碼)

User userForm = new User();

String result = new String();

SmartUpload su = new SmartUpload();

//文件名

String filename = new String();

//文件擴展名

String fileext = new String();

//文件上傳後存儲的路徑

String path = request.getRealPath(request.getContextPath());

path = path.substring(0,path.lastIndexOf(“\\”));

path += “\\images”;

//圖片的url

String url = new String();

//創建文件夾

java.io.File file = new java.io.File(path);

file.mkdirs();

try{

// 上傳初始化

su.initialize(this.servlet.getServletConfig(),request,response);

//設定上傳限制

//1.限制每個上傳照片的最大長度。

su.setMaxFileSize(5000000);

//2.限制總上傳數據的長度。

su.setTotalMaxFileSize(10000000);

//3.設定允許上傳的照片(通過擴展名限制)。

su.setAllowedFilesList(“jpg,gif,GIF,JPG”);

//上傳照片

su.upload();

//獲得請求的表單數據

String username = su.getRequest().getParameter(“username”);//username

String password = su.getRequest().getParameter(“password”);//password

String sex = su.getRequest().getParameter(“sex”);//sex

String email =su.getRequest().getParameter(“email”);//email

String apwd =su.getRequest().getParameter(“apwd”);//question of password

String rpwd =su.getRequest().getParameter(“rpwd”);//anser of password

userForm.setUsername(username);

userForm.setPassword(password);

userForm.setSex(sex);

userForm.setEmail(email);

userForm.setApwd(apwd);

userForm.setRpwd(rpwd);

//將上傳照片全部保存到指定目錄

if(!su.getFiles().getFile(0).isMissing()){

su.save(path,su.SAVE_PHYSICAL);

//文件名

filename = su.getFiles().getFile(0).getFileName();

//得到擴展名

fileext = su.getFiles().getFile(0).getFileExt();

//給圖片改名,命名形如:20060814135411.gif

Utility u = new Utility();

String newName = u.getId()+”.”+fileext;

java.io.File oldFile = new java.io.File(path+”\\”+filename);

java.io.File newFile = new java.io.File( path + “\\”+newName);

//上傳圖片的url

url = request.getContextPath()+”/images/”+newName;

if(oldFile!=null){

oldFile.renameTo(newFile);

}else{

result+=”命名出錯!”;

}

System.out.println(“0000000000000000000″+filename);

System.out.println(“0000000000000000000″+path+”\\”+newName);

System.out.println(“0000000000000000000″+url);

System.out.println(result);

}

}catch(com.jspsmart.upload.SmartUploadException e){

result += “file出錯信息:”;

result += e.getMessage();

System.out.println(result);

}

java附件上傳功能,上傳的附件要根據時間來重命名,上傳的路徑保存在服務器指定目錄根據年月來分的目錄里

如果使用框架的話,比如 struts ,就比較簡單了

獲取上傳的時間:

Calendar cal = Calendar.getInstance();

String year = String.valueOf(cal.get(Calendar.YEAR));

String month = String.valueOf(cal.get(Calendar.MONTH));

獲取路徑:

String path = ServletActionContext.getServletContext().getRealPath(“/”+year+”/”+month);

直接保存在 path 這個目錄裡面就可以

如果沒有使用 框架,可以使用 FileUpload 這個 jar 包來上傳文件

java 上傳附件實現方法

第一,jsp上傳頁面內容:

%@ page contentType=”text/html; charset=GBK” %

%@ taglib uri=”/WEB-INF/struts-html.tld” prefix=”html” %

html

head

title

jsp1

/title

/head

body bgcolor=”#ffffff”

html:form action=”myupload.do” method=”post” enctype=”multipart/form-data”

html:file property=”thisFile”/br

html:file property=”thisFile”/br

html:submit/

/html:form

/body

/html

第二,一個javabean

package upload;

import org.apache.struts.action.ActionForm;

import org.apache.struts.upload.FormFile;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;

public class FileInfo extends ActionForm {

private FormFile thisFile;

public FormFile getThisFile() {

return thisFile;

}

public void setThisFile(FormFile thisFile) {

this.thisFile = thisFile;

}

public ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) {

/** @todo: finish this method, this is just the skeleton.*/

return null;

}

public void reset(ActionMapping actionMapping,

HttpServletRequest servletRequest) {

}

}

第三,一個action

package upload;

import java.io.*;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.Action;

import org.apache.struts.upload.FormFile;

public class myupload extends Action {

public ActionForward execute(ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest request,

HttpServletResponse response) throws

FileNotFoundException, IOException {

FileInfo fileInfo = (FileInfo) actionForm;

//獲取上傳文件

FormFile f=fileInfo.getThisFile();

InputStream is=f.getInputStream();

//將文件存入服務器上

String filename=request.getSession().getServletContext().getRealPath(“/shangchuan/”+f.getFileName());

OutputStream os=new FileOutputStream(filename);

int x=0;

//優化流處理過程

byte[] buffer = new byte[8192];

while((x=is.read(buffer, 0, 8192))!=-1)

{

os.write(buffer,0,x);

}

os.close();

response.sendRedirect(“jsp1.jsp”);//根據實際情況跳轉

return null;

}

}

原創文章,作者:RQYX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144277.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RQYX的頭像RQYX
上一篇 2024-10-24 15:28
下一篇 2024-10-24 15:28

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論