Ⅰ multipartfile怎麼獲得這個file
multipartfile怎麼獲得這個file
這能轉的 我都轉了,寫這個你要先搞清楚,當文件往伺服器傳時,我用的tomact 他會在tomact先生成temp的臨時文件。
//獲取零時文件(如果臨時文件出錯這取不了)
CommonsMultipartFile cf= (CommonsMultipartFile)file;
DiskFileItem fi = (DiskFileItem)cf.getFileItem();
File f = fi.getStoreLocation();
其實這個f是後綴為.temp的臨時文件 你要變成自己的還要去轉換一道或者直接變成。jpg
Ⅱ java web開發,上傳圖片並讀取
java web開發中,使用文件操作類來上傳圖片並讀取,如下代碼:
*@desc:圖片處理工具
*@author:bingye
*@createTime:2015-3-17下午04:25:32
*@version:v1.0
*/
publicclassImageUtil{
/**
*將圖片寫到客戶端
*@author:bingye
*@createTime:2015-3-17下午04:36:04
*@history:
*@paramimage
*@paramresponsevoid
*/
publicstaticvoidwriteImage(byte[]image,HttpServletResponseresponse){
if(image==null){
return;
}
byte[]buffer=newbyte[1024];
InputStreamis=null;
OutputStreamos=null;
try{
is=newByteArrayInputStream(image);
os=response.getOutputStream();
while(is.read(buffer)!=-1){
os.write(buffer);
os.flush();
}
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(is!=null){is.close();}
if(os!=null){os.close();}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
/**
*獲取指定路勁圖片
*@author:bingye
*@createTime:2015-3-21上午10:50:44
*@paramfilePath
*@paramresponsevoid
*/
publicstaticvoidwriteImage(StringfilePath,HttpServletResponseresponse){
FileimageFile=newFile(filePath);
if(imageFile!=null&&imageFile.exists()){
byte[]buffer=newbyte[1024];
InputStreamis=null;
OutputStreamos=null;
try{
is=newFileInputStream(imageFile);
os=response.getOutputStream();
while(is.read(buffer)!=-1){
os.write(buffer);
os.flush();
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(is!=null){is.close();}
if(os!=null){os.close();}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
/**
*圖片上傳到文件夾
*@author:bingye
*@createTime:2015-3-20下午08:07:25
*@paramfile
*@paramsavePath
*@returnboolean
*/
(CommonsMultipartFilefile,StringsavePath){
if(file!=null&&!file.isEmpty()){
//獲取文件名稱
StringfileName=file.getOriginalFilename();
//獲取後綴名
StringsuffixName=fileName.substring(fileName.indexOf(".")+1);
//新名稱
StringnewFileName=System.currentTimeMillis()+"."+suffixName;
//新文件路勁
StringfilePath=savePath+newFileName;
//獲取存儲文件路徑
FilefileDir=newFile(savePath);
if(!fileDir.exists()){
//如果文件夾沒有:新建
fileDir.mkdirs();
}
FileOutputStreamfos=null;
try{
fos=newFileOutputStream(filePath);
fos.write(file.getBytes());
fos.flush();
returnResultUtil.success("UPLOAD_SUCCESS",URLEncoder.encode(newFileName,"utf-8"));
}catch(Exceptione){
e.printStackTrace();
returnResultUtil.fail("UPLOAD_ERROR");
}finally{
try{
if(fos!=null){
fos.close();
}
}catch(IOExceptione){
e.printStackTrace();
returnResultUtil.fail("UPLOAD_ERROR");
}
}
}
returnResultUtil.fail("UPLOAD_ERROR");
}}
Ⅲ 用java怎麼實現從前端接收、處理並傳回視頻
1、接收前端上傳的文件
/**
* 接收多文件
*/
@RequestMapping("/upload")
public R uploadFile(@RequestParam Map<String, Object> params, HttpServletRequest request) {
// 復雜類型的request對象
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
// 獲取文件名集合放入迭代器
Iterator<String> files = mRequest.getFileNames();
while (files.hasNext()) {
// 獲取上傳文件的對象
MultipartFile mFile = mRequest.getFile(files.next());
if (mFile != null) {
//原始文件名稱
String oldfile = mFile.getOriginalFilename();
//文件後綴
String suffix = oldfile.substring(oldfile.indexOf('.'), oldfile.length());
String suffix2 = oldfile.substring(oldfile.indexOf('.')+1, oldfile.length());
/***************文件處理*********************/
}
}
}
2.接收前端上傳的文件
/**
* 接收附件
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value="fileupload",method=RequestMethod.POST)
public void springUpload(HttpServletRequest request) {
//將當前上下文初始化給 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//檢查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request)) {
//將request變成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//獲取multiRequest 中所有的文件名
Iterator iter=multiRequest.getFileNames();
while(iter.hasNext()){
//一次遍歷所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
//最初上傳文件名的文件名
String oldFilename = file.getOriginalFilename();
//獲取初始文件名後綴
String fileSuffix = oldFilename.substring(oldFilename.lastIndexOf(".") +1);
/***************文件處理*********************/
}
}
3.接收前端上傳的文件
/**
* 接收文件
*
*
* @param model
* @return
* @throws IOException
* @throws IllegalStateException
*/
@RequestMapping(value = "imageupload")
public void imageUpload(MultipartFile file) throws IllegalStateException, IOException {
//文件名稱
String realFileName = file.getOriginalFilename();
//文件後綴
String suffix = realFileName.substring(realFileName.lastIndexOf(".") + 1);
/***************文件處理*********************/
}
Ⅳ MultipartFile獲得文件名(包括後綴)
調用以上方法可以得到文件名包括後綴
Ⅳ java-SpringMVC 後台怎麼獲取前台jsp頁面中file中的文件
1.打開SpringMVC的文件上傳功能:***-servlet.xml中配置
Ⅵ 怎麼用js來獲取 file中的上傳文件的文件名
好像不可以,你在java里使用multipartfile 來創建對象,通過方法獲取
Ⅶ multipart ile-MultipartFile上傳文件時,中文文件名亂碼怎麼解決
現象:採用smartupload上傳文件時獲取文件名及相關參數()時亂碼.
原因:上傳文件的頁面會以頁面指定的編碼格式對上傳的數據進行編碼,smartupload在接收數據時會以系統默認的編碼解碼上傳數據,如果頁面編碼與系統編碼不一致,則會導致亂碼
解決:
1.指定頁面編碼與系統編碼一致:<meta
http-equiv="Content-Type" content="text/html;
charset=utf-8">,對於windows操作系統應為gbk,對於linux,要指定為export|grep
LANG中一致的編碼格式.
2.修改smartupload.jar中的SmartUpload.java中: String s11 = new
String(m_binArray, m_startData, (m_endData - m_startData) + 1);
和getDataHeader方法中類似部分,加入charSet參數,手動指定編碼
這里已經有修改好的smartupload.jar包,只需在上傳時指定編碼參數即可:su.upload("UTF8");
Ⅷ 使用Spring MVC MultipartFile上傳圖片後如何給圖片隨機生成名稱避免圖片名稱重復呢求指教……
一般是通過得到系統時間加隨機數生成新文件名,避免重復
int random = (int) (Math.random() * 10000);
String newFileName = System.currentTimeMillis() + random ;
Ⅸ 文件上傳總結
參考文章:
https://www.cnblogs.com/yunliu0603/p/9504756.html
https://www.cnblogs.com/tengyunhao/p/7670293.html
注意:
單文件 MultipartFile file;
多文件 MultipartFile[] file;
判斷文件是否為空:!file.isEmpty() ---> 不為空
獲取上傳文件名:String originalFilename = file.getOriginalFilename() 包括文件名的後綴
文件保存路徑:String filePath = request.getServletContext().getRealPath("/") + "upload/" + originalFilename;
初始化文件信息:File newFile = new File(filePath);
創建目錄:newFile.getParentFile().mkdir();
轉存文件:file.transferTo(newFile);
步驟:
1.編寫一個控制類;
2.編寫提交表單的 action 方法,並使用 SpringMVC 註解 @RequestParam 來指定表單中的 file 參數;
3.指定一個用於保存文件的 web項目路徑;
4.通過 MultipartFile 的 transferTo() 來轉存文件到相應的路徑;
5.編寫 form 表單;
6.在 springMVC 配置文件中,定義文件上傳解析器;
springMVC配置文件:
MultipartResolver 用於處理文件上傳,當收到請求時 DispatcherServlet 的 checkMultipart() 方法會調用 MultipartResolver 的 isMultipart() 方法判斷請求中是否包含文件。如果請求數據中包含文件,則調用 MultipartResolver 的 resolveMultipart() 方法對請求的數據進行解析,然後將文件數據解析成 MultipartFile 並封裝在 MultipartHttpServletRequest (繼承了 HttpServletRequest) 對象中,最後傳遞給 Controller。
MultipartResolver 是一個介面,它的實現類如下圖所示,分為 CommonsMultipartResolver 類和 類。
其中 CommonsMultipartResolver 使用 commons Fileupload 來處理 multipart 請求,所以在使用時,必須要引入相應的 jar 包;
而 是基於 Servlet 3.0來處理 multipart 請求的,所以不需要引用其他 jar 包,但是必須使用支持 Servlet 3.0的容器才可以,以tomcat為例,從 Tomcat 7.0.x的版本開始就支持 Servlet 3.0了。
關於 MultipartResolver 的具體講解,參考: https://www.cnblogs.com/tengyunhao/p/7670293.html
Ⅹ 在ie8如何非同步上傳文件,springmvc後台使用MultipartFile接收。
直接上代碼給你參考
@RequestMapping("upload")
public String upload(HttpServletRequest request, PrintWriter out) throws JSONException {
String realPath = "D:/upload"
+ DateUtil.getCurrenDate();// 上傳圖片路徑dir
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
MultipartFile multipartFile = null;
String fileName = null;
for (Map.Entry<String, MultipartFile> set : fileMap.entrySet()) {
// String filekey = set.getKey();// Filedata
multipartFile = set.getValue();// 文件名
}
fileName = this.storeIOc(multipartRequest, multipartFile,realPath);
String fileName = "";
String logImageName = "";
if (file.isEmpty()) {
System.out.println("文件未上傳");
} else {
FileHelper.mkdirs(realPath);//如果文件路徑不存在,則創建
String _fileName = file.getOriginalFilename();
String suffix = _fileName.substring(_fileName.lastIndexOf("."));
// /**使用UUID生成文件名稱**/
logImageName = UUID.randomUUID().toString() + suffix;
fileName = realPath + File.separator + logImageName;
File restore = new File(fileName);
try {
file.transferTo(restore);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// 返回默認的圖片地址
return fileName;
}