Java上傳文件圖片到服務(wù)器的方法
這里我記錄一個(gè)比較簡(jiǎn)單方便操作的JAVA上傳文件圖片到服務(wù)器并且保存,具體內(nèi)容如下
首先是頁(yè)面html的 我這是提交一個(gè)文件和類型
<div style="border: 1px solid red;"> 我是添加一張臨時(shí)圖片得到微信的media_id保存數(shù)據(jù)庫(kù)! <form action="xxxxxxxxm" enctype="multipart/form-data" method="post"> <div style="display: none;"> <input type="text" value="IMAGE" name="type"/> </div> 上傳圖片:<input type="file" name="file" onchange="previewImage(this, 'prvid')" multiple="multiple"><br /> <input type="submit" value="提交" /> </form> <div id="prvid">預(yù)覽容器</div> </div>
預(yù)覽圖片js
function previewImage(file, prvid) {
/* file:file控件
* prvid: 圖片預(yù)覽容器
*/
var tip = "Expect jpg or png or gif!"; // 設(shè)定提示信息
var filters = {
"jpeg" : "/9j/4",
"gif" : "R0lGOD",
"png" : "iVBORw"
}
var prvbox = document.getElementById(prvid);
prvbox.innerHTML = "";
if (window.FileReader) { // html5方案
for (var i = 0, f; f = file.files[i]; i++) {
var fr = new FileReader();
fr.onload = function(e) {
var src = e.target.result;
if (!validateImg(src)) {
alert(tip)
} else {
showPrvImg(src);
}
}
fr.readAsDataURL(f);
}
} else { // 降級(jí)處理
if (!/\.jpg$|\.png$|\.gif$/i.test(file.value)) {
alert(tip);
} else {
showPrvImg(file.value);
}
}
function validateImg(data) {
var pos = data.indexOf(",") + 1;
for ( var e in filters) {
if (data.indexOf(filters[e]) === pos) {
return e;
}
}
return null;
}
function showPrvImg(src) {
var img = document.createElement("img");
img.src = src;
prvbox.appendChild(img);
}
}
之后就是后臺(tái)得到
@RequestMapping(params = "method=addCircle")
public String addCircle(HttpServletResponse response,HttpServletRequest request) throws IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String path = request.getSession().getServletContext().getRealPath(
"/BackstageShoppingWebsite/images/addCircleimage");//保存的服務(wù)器地址
Map<String, String> map = Upload
.upload(request, 1024 * 1024 * 10, path);
String file= map.get("file"); // 名稱
String image = map.get("type"); // 圖像
String newFile = map.get("newFile");// 地址
return null;
}
好了現(xiàn)在重點(diǎn)就是看Upload 這個(gè)類了 這個(gè)類基本是封裝好了的,需要 加的東西可以自己取看看然后修改,然后這個(gè)類用的是cos.jar包
package com.web.weixin.bean;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.oreilly.servlet.multipart.FilePart;
import com.oreilly.servlet.multipart.MultipartParser;
import com.oreilly.servlet.multipart.ParamPart;
import com.oreilly.servlet.multipart.Part;
public class Upload {
public static Map<String, String> upload(HttpServletRequest request,
int maxSize, String path) {
//以map形式保存數(shù)據(jù) key對(duì)應(yīng)保存的是獲取界面上的name名稱 value保存的是獲取界面上的name對(duì)應(yīng)的值
Map<String, String> map = new HashMap<String, String>();
Part part = null;
try {
MultipartParser mrequest = new MultipartParser(request, maxSize);
mrequest.setEncoding("utf-8");
//遍歷所有的part組
while ((part = mrequest.readNextPart()) != null) {
if (part.isFile()) { //判斷是否是文件
FilePart filepart = (FilePart) part;//轉(zhuǎn)化成文件組
String fileName = filepart.getFileName();//得到文件名
if (fileName != null && fileName.length() > 0) {
// 取得擴(kuò)展名
String fileExtName = fileName.substring(
fileName.lastIndexOf(".") + 1).toLowerCase();
// 只上傳圖片 //判斷圖片上傳的格式是否符合 后綴名是否有效
if (fileExtName.equalsIgnoreCase("jpeg")
|| fileExtName.equalsIgnoreCase("png")||
fileExtName.equalsIgnoreCase("jpg")
|| fileExtName.equalsIgnoreCase("gif")
|| fileExtName.equalsIgnoreCase("ico")
|| fileExtName.equalsIgnoreCase("bmp")
|| fileExtName.equalsIgnoreCase("flv")
|| fileExtName.equalsIgnoreCase("mp4")
|| fileExtName.equalsIgnoreCase("mp3")) {
/*String newFileName = new Date().getTime() + "."+ fileExtName;
//重新改文件名 文件名+擴(kuò)展名 */
String newFileName =new Date().getTime() +fileName;//不改圖片名字
String newPath = path + "/" + newFileName; //文件處理文件上傳的路徑
File newFile = new File(newPath);
filepart.writeTo(newFile); //將文件真正寫入到對(duì)應(yīng)的文件夾中
//filepart.getName() 得到 request 要接收的參數(shù)的名字
map.put(filepart.getName(), newFileName);//把文件信息保存到map中
map.put("newFile", newFile.toString());
} else {
map.put("geshi", "geshi");
continue;
}// 說(shuō)明上傳的不是圖片
} else {
map.put("yes","yes");
continue; // 說(shuō)明沒(méi)有選擇上傳圖片
}
} else if (part.isParam()) { //判斷是否是參數(shù)
ParamPart paramPart = (ParamPart) part;
map.put(paramPart.getName(), paramPart.getStringValue());
}
}
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
}
cos.jar包下載,點(diǎn)擊打開鏈接
本文已被整理到了《Java上傳操作技巧匯總》,歡迎大家學(xué)習(xí)閱讀。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java實(shí)現(xiàn)上傳文件到服務(wù)器和客戶端
- Java下http下載文件客戶端和上傳文件客戶端實(shí)例代碼
- java實(shí)現(xiàn)sftp客戶端上傳文件以及文件夾的功能代碼
- 詳解Java的Struts框架中上傳文件和客戶端驗(yàn)證的實(shí)現(xiàn)
- Java實(shí)現(xiàn)上傳文件圖片到指定服務(wù)器目錄
- Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法
- Java上傳文件到服務(wù)器端的方法
- Java實(shí)現(xiàn)跨服務(wù)器上傳文件功能
- java模擬客戶端向服務(wù)器上傳文件
相關(guān)文章
Spring boot中自定義Json參數(shù)解析器的方法
這篇文章主要介紹了Spring boot中自定義Json參數(shù)解析器的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Spring boot 數(shù)據(jù)庫(kù)連接斷線重連問(wèn)題
這篇文章主要介紹了Spring boot 數(shù)據(jù)庫(kù)連接斷線重連問(wèn)題,需要的朋友可以參考下2017-06-06
java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作
這篇文章主要介紹了java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Java 通過(guò)反射變更String的值過(guò)程詳解
這篇文章主要介紹了Java 通過(guò)反射變更String的值過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
Thymeleaf 3.0 自定義標(biāo)簽方言屬性的實(shí)例講解
這篇文章主要介紹了Thymeleaf 3.0 自定義標(biāo)簽方言屬性的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析
這篇文章主要介紹了Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容,是比較實(shí)用的功能,需要的朋友可以參考下2014-08-08

