java實現(xiàn)文件上傳到服務器
更新時間:2022年06月23日 09:44:41 作者:皮卡丘的搬磚日記
這篇文章主要為大家詳細介紹了java實現(xiàn)文件上傳到服務器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)文件上傳到服務器的具體代碼,供大家參考,具體內(nèi)容如下
1、運行jar包,發(fā)送post請求
public static void main(String[] args) { ? ? ? ? //String filePath="C:/Users/706293/IT_onDuty.xls"; ? ? ? ? String filePath=args[0]; ? ? ? ? String unid=args[1]; ? ? ? ?// String unid="155555"; ? ? ? ? DataOutputStream out = null; ? ? ? ? final String newLine = "\r\n"; ? ? ? ? final String prefix = "--"; ? ? ? ? try { ? ? ? ? ? ? URL url = new URL("http://172.20.200.64:9000/excel9000/uploads"); ? ? ? ? ? ? HttpURLConnection conn = (HttpURLConnection)url.openConnection(); ? ? ? ? ? ? String BOUNDARY = "-------7da2e536604c8"; ? ? ? ? ? ? conn.setRequestMethod("POST"); ? ? ? ? ? ? // 發(fā)送POST請求必須設置如下兩行 ? ? ? ? ? ? conn.setDoOutput(true); ? ? ? ? ? ? conn.setDoInput(true); ? ? ? ? ? ? conn.setUseCaches(false); ? ? ? ? ? ? conn.setRequestProperty("connection", "Keep-Alive"); ? ? ? ? ? ? conn.setRequestProperty("Charsert", "UTF-8"); ? ? ? ? ? ? conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); ? ? ? ? ? ? out = new DataOutputStream(conn.getOutputStream()); ? ? ? ? ? ? // 添加參數(shù)file ? ? ? ? ? ? File file = new File(filePath); ? ? ? ? ? ? StringBuilder sb1 = new StringBuilder(); ? ? ? ? ? ? sb1.append(prefix); ? ? ? ? ? ? sb1.append(BOUNDARY); ? ? ? ? ? ? sb1.append(newLine); ? ? ? ? ? ? sb1.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"" + newLine); ? ? ? ? ? ? sb1.append("Content-Type:application/octet-stream"); ? ? ? ? ? ? sb1.append(newLine); ? ? ? ? ? ? sb1.append(newLine); ? ? ? ? ? ? out.write(sb1.toString().getBytes()); ? ? ? ? ? ? DataInputStream in = new DataInputStream(new FileInputStream(file)); ? ? ? ? ? ? byte[] bufferOut = new byte[1024]; ? ? ? ? ? ? int bytes = 0; ? ? ? ? ? ? while ((bytes = in.read(bufferOut)) != -1) { ? ? ? ? ? ? ? ? out.write(bufferOut, 0, bytes); ? ? ? ? ? ? } ? ? ? ? ? ? out.write(newLine.getBytes()); ? ? ? ? ? ? in.close(); ? ? ? ? ? ? // 添加參數(shù)sysName ? ? ? ? ? ? StringBuilder sb = new StringBuilder(); ? ? ? ? ? ? sb.append(prefix); ? ? ? ? ? ? sb.append(BOUNDARY); ? ? ? ? ? ? sb.append(newLine); ? ? ? ? ? ? sb.append("Content-Disposition: form-data;name=\"unid\""); ? ? ? ? ? ? sb.append(newLine); ? ? ? ? ? ? sb.append(newLine); ? ? ? ? ? ? sb.append(unid); ? ? ? ? ? ? out.write(sb.toString().getBytes()); ? ? ? ? ? ? ?添加參數(shù)returnImage ? ? ? ? ? ? //StringBuilder sb2 = new StringBuilder(); ? ? ? ? ? ? //sb2.append(newLine); ? ? ? ? ? ? //sb2.append(prefix); ? ? ? ? ? ? //sb2.append(BOUNDARY); ? ? ? ? ? ? //sb2.append(newLine); ? ? ? ? ? ? //sb2.append("Content-Disposition: form-data;name=\"returnImage\""); ? ? ? ? ? ? //sb2.append(newLine); ? ? ? ? ? ? //sb2.append(newLine); ? ? ? ? ? ? //sb2.append("false"); ? ? ? ? ? ? //out.write(sb2.toString().getBytes()); ? ? ? ? ? ? byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes(); ? ? ? ? ? ? // 寫上結尾標識 ? ? ? ? ? ? out.write(end_data); ? ? ? ? ? ? out.flush(); ? ? ? ? ? ? out.close(); ? ? ? ? ? ? // 定義BufferedReader輸入流來讀取URL的響應 ? ? ? ? ? ? BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); ? ? ? ? ? ? String line = null; ? ? ? ? ? ? while ((line = reader.readLine()) != null) { ? ? ? ? ? ? ? ? System.out.println(line); ? ? ? ? ? ? } ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? System.out.println("發(fā)送POST請求出現(xiàn)異常!" + e); ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? }
2、服務器接收端,將文件上床服務器指定位置
package com.dayang.ExcelController; import com.dayang.ExcelService.FileService; import com.dayang.dubbo.CreateExcelConsumer; import com.dayang.util.Result; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @RestController public class FileController { ? ? protected static final Logger logger = LoggerFactory.getLogger(FileController.class); ? ? @Autowired ? ? private CreateExcelConsumer createExcelConsumer; ? ? @Autowired ? ? FileService fileService; ? ? @PostMapping("/uploads") ? ? public String uploads(@RequestParam("file") MultipartFile file,@RequestParam("unid")String unid) throws IOException { ? ? ? ? //String unid="444444"; ? ? ? ? String uploadPath = ""; ? ? ? ? try{ ? ? ? ? ? ? logger.info("==>uuid: " + unid); ? ? ? ? ? ? if (file == null) { ? ? ? ? ? ? ? ? logger.error("==> ?沒有上傳文件。"); ? ? ? ? ? ? ? ? return Result.error("沒有上傳文件。"); ? ? ? ? ? ? } ? ? ? ? ? ? logger.info("==>文件名: " + file.getOriginalFilename()); ? ? ? ? ? ? ?uploadPath = fileService.handlerMultipartFile(file,unid); ? ? ? ? ? ? //return Result.success("文件上傳完成。", newFileName); ? ? ? ? ? ? //uploadPath = createExcelConsumer.uploadExcel(file,unid); ? ? ? ? ? ? logger.info("==>文件路徑: " + uploadPath); ? ? ? ? } ? ? ? ? catch (Exception e){ ? ? ? ? } ? ? ? ? return uploadPath; ? ? } ? ? @RequestMapping("/test") ? ? public ?String ?test(){ ? ? ? ? System.out.println("test測試成功。"); ? ? ? ? logger.info("==> ?測試成功。"); ? ? ? ? return ?"test"; ? ? } }
3、service
package com.dayang.ExcelService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; @Service public class FileService { ? ? protected static final Logger logger= LoggerFactory.getLogger(FileService.class); ? ? private String directoryPath = "C:\\Temp"; ? ? public FileService() { ? ? ? ? File directory = new File(directoryPath); ? ? ? ? if (!directory.exists()) { ? ? ? ? ? ? directory.mkdirs(); ? ? ? ? } ? ? } ? ? public String handlerMultipartFile(MultipartFile multipartFile ,String unid) { ? ? ? ? String fileOldName = multipartFile.getOriginalFilename(); ? ? ? ? int beginIndex = fileOldName.lastIndexOf("."); ? ? ? ?String suffix = fileOldName.substring(beginIndex); ? ? ? ? String newFileName = ?unid+ suffix; ? ? ? ? File upFile = new File(directoryPath + "/" + newFileName); ? ? ? ? OutputStream outputStream = null; ? ? ? ? try { ? ? ? ? ? ? byte[] fileByte = multipartFile.getBytes(); ? ? ? ? ? ? outputStream = new FileOutputStream(upFile); ? ? ? ? ? ? outputStream.write(fileByte); ? ? ? ? ? ? logger.info("<== ?文件寫出完成: " + newFileName); ? ? ? ? ? ? return newFileName; ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? logger.error("", e); ? ? ? ? } finally { ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? if (outputStream != null) { ? ? ? ? ? ? ? ? ? ? outputStream.flush(); ? ? ? ? ? ? ? ? ? ? outputStream.close(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } catch (Exception e) { ? ? ? ? ? ? ? ? logger.error("", e); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return directoryPath + "/" + newFileName; ? ? } }
4、Result
package com.dayang.util; import com.alibaba.fastjson.JSONObject; public class Result { ? ? public static String success(String msg, Object result) { ? ? ? ? JSONObject jsonObject = new JSONObject(); ? ? ? ? jsonObject.put("status", 1); ? ? ? ? jsonObject.put("message", msg); ? ? ? ? jsonObject.put("result", result); ? ? ? ? return jsonObject.toJSONString(); ? ? } ? ? public static String error(String msg) { ? ? ? ? JSONObject jsonObject = new JSONObject(); ? ? ? ? jsonObject.put("status", -1); ? ? ? ? jsonObject.put("message", msg); ? ? ? ? return jsonObject.toJSONString(); ? ? } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java常用類庫Apache Commons工具類說明及使用實例詳解
這篇文章主要介紹了Java常用類庫Apache Commons工具類說明及使用實例詳解,需要的朋友可以參考下2020-02-02mybatis通過TypeHandler?list轉換string類型轉換方式
這篇文章主要介紹了mybatis通過TypeHandler?list轉換string類型轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07SpringBoot如何使用Scala進行開發(fā)的實現(xiàn)
這篇文章主要介紹了SpringBoot如何使用Scala進行開發(fā)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12Java如何優(yōu)雅地避免空指針異常(NullPointerException)
這篇文章主要給大家介紹了關于Java如何優(yōu)雅地避免空指針異常(NullPointerException)的相關資料,空指針異常(NullPointerException)是一種常見的運行時異常,它在Java編程中經(jīng)常出現(xiàn),需要的朋友可以參考下2024-03-03