700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java 跨域上传_java后台图片跨域上传图片 文件

java 跨域上传_java后台图片跨域上传图片 文件

时间:2019-10-17 08:54:55

相关推荐

java 跨域上传_java后台图片跨域上传图片 文件

发送方

@ResponseBody

@RequestMapping(value="/imgUpLoadNewOneKuaYu")public String imgUpLoadNewOneKuaYu(HttpServletRequest request) throwsIOException {

String urlStr= "http://localhost:9080/no-js/admin/upload";

Map textMap = new HashMap();

MultipartHttpServletRequest multiRequest= (MultipartHttpServletRequest) request;//流的数据*//取得request中的所有文件名

Iterator iter =multiRequest.getFileNames();

Map fileMap = new HashMap();if(iter.hasNext()){//取得上传文件

MultipartFile file =multiRequest.getFile(iter.next());if(file != null){//取得当前上传文件的文件名称

String myFileName =file.getOriginalFilename();

InputStream fileInputStream=file.getInputStream();

fileMap.put(myFileName, fileInputStream);

}

}

String ret=FileUpLoadNew.formUpload(urlStr, textMap, fileMap);

System.out.println(ret);returnret;

}

packagenet.sahv.bdyz.util;importjava.io.BufferedReader;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.FileInputStream;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;.HttpURLConnection;.URL;importjava.util.Iterator;importjava.util.Map;public classFileUpLoadNew {/***@paramurlStr

*@paramtextMap

*@paramfileMap

*@return

*/

public static String formUpload(String urlStr, Map textMap, MapfileMap) {

String res= "";

HttpURLConnection conn= null;

String BOUNDARY= "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符

try{

URL url= newURL(urlStr);

conn=(HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

conn.setReadTimeout(30000);

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setUseCaches(false);

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)");

conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" +BOUNDARY);

OutputStream out= newDataOutputStream(conn.getOutputStream());//textMap:如果传送的是文本内容

if (textMap != null) {

StringBuffer strBuf= newStringBuffer();

Iterator> iter =textMap.entrySet().iterator();while(iter.hasNext()) {

Map.Entry entry =iter.next();

String inputName=(String) entry.getKey();

String inputValue=(String) entry.getValue();if (inputValue == null) {continue;

}

strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n");

strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"\r\n\r\n");

strBuf.append(inputValue);

}

out.write(strBuf.toString().getBytes());

}//fileMap:如果传送的是文件流

if (fileMap != null) {

Iterator> iter =fileMap.entrySet().iterator();while(iter.hasNext()) {

Map.Entry entry =iter.next();

String inputName=(String) entry.getKey();

FileInputStream inputValue=(FileInputStream) entry.getValue();if (inputValue == null) {continue;

}

String contentType= "image/png";

StringBuffer strBuf= newStringBuffer();

strBuf.append("\r\n").append("--").append(BOUNDARY).append("\r\n");

strBuf.append("Content-Disposition: form-data; name=\"" + inputName + "\"; filename=\"" + inputName + "\"\r\n");

strBuf.append("Content-Type:" + contentType + "\r\n\r\n");

out.write(strBuf.toString().getBytes());

DataInputStream in= newDataInputStream(inputValue);int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {

out.write(bufferOut,0, bytes);

}

in.close();

}

}byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();

out.write(endData);

out.flush();

out.close();//读取返回数据

StringBuffer strBuf = newStringBuffer();

BufferedReader reader= new BufferedReader(newInputStreamReader(conn.getInputStream()));

String line= null;while ((line = reader.readLine()) != null) {

strBuf.append(line).append("\n");

}

res=strBuf.toString();

reader.close();

reader= null;

}catch(Exception e) {

System.out.println("发送POST请求出错。" +urlStr);

e.printStackTrace();

}finally{//最后关闭链接

if (conn != null) {

conn.disconnect();

conn= null;

}

}returnres;

}

}

接收方

package com.lyc.noJs.controller;

import mon.base.Splitter;

import com.lyc.noJs.util.ImgMD5Util;

import lombok.extern.slf4j.Slf4j;

import org.joda.time.DateTime;

import org.springframework.stereotype.Controller;

import org.springframework.util.MultiValueMap;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.io.*;

import java.security.NoSuchAlgorithmException;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

@Controller

@RequestMapping("/admin")

@Slf4j

public class UploadController {

@ResponseBody

@RequestMapping(value = "/upload",method= RequestMethod.POST)

public String upload(MultipartHttpServletRequest multiRequest) throws UnsupportedEncodingException {

//图片文件夹根路径

//TODO

//这里的父路径暂时是target路径,在真实上线后,应该将其改成其它路径。

String uploadFilePath = multiRequest.getServletContext().getRealPath("/upload/");

//图片文件夹日期路径

String datePath = getDateFolderName() + "\\";

//图片名称

String imagePath = saveImage(multiRequest,uploadFilePath,datePath);

log.info(imagePath);

return imagePath;

}

/**

* 保存图片

* @param multiRequest

* @param uploadFilePath

* @param datePath

* @return

* @throws UnsupportedEncodingException

*/

public String saveImage(MultipartHttpServletRequest multiRequest,String uploadFilePath,String datePath) throws UnsupportedEncodingException {

String imageNameHead = createImageNameHead();

String imageName = "";

//设置图片的浏览为utf-8格式,防止图片名称乱码

multiRequest.setCharacterEncoding("utf-8");

MultiValueMap multiFileMap = multiRequest.getMultiFileMap();

Set>> set = multiFileMap.entrySet();

Iterator>> iterator = set.iterator();

while(iterator.hasNext()){

Map.Entry> entry = iterator.next();

String imageNameEnd = getImageNameEnd(entry);

imageName = imageNameHead + "." + imageNameEnd;

List multipartFileList = entry.getValue();

MultipartFile multipartFile = multipartFileList.get(0);

//图片文件的包路径

String imagePath = uploadFilePath + datePath;

//如果文件夹创建失败,则返回null

if(makeParentFolder(imagePath)){ //如果文件夹创建失败,则返回false,否则返回true

//图片文件的路径

String imgFile = imagePath + imageName;

//如果文件创建失败,则返回null

if(!makeImage(multipartFile,imgFile)){ //当文件创建失败时,返回false,否则返回true

return null;

}

} else {

return null;

}

}

return datePath + imageName;

}

/**

* 创建图片

* @param multipartFile

* @param imgFile

* @return

*/

public boolean makeImage(MultipartFile multipartFile,String imgFile){

File tempFile = new File(imgFile);

if(tempFile != null){

//如果原图片不存在,则生成图片

if(!tempFile.exists()){

try {

log.info("1");

multipartFile.transferTo(tempFile);

} catch (IOException e) {

e.printStackTrace();

}

}

return true;

}

return false;

}

/**

* 创建父文件路径

* @param imagePath

* @return

*/

public boolean makeParentFolder(String imagePath){

File parentFile = new File(imagePath);

if(parentFile != null){

while (!parentFile.exists()){

//批量生成全部的父文件路径

parentFile.mkdirs();

}

return true;

}

return false;

}

/**

* 文件夹生成规则

*/

public String getDateFolderName(){

DateTime dataTime = new DateTime();

String currentDate = dataTime.toString("yyyy\\MM\\dd");

return currentDate;

}

/**

* 创建图片文件的文件名

* @return

*/

public String createImageNameHead(){

DateTime dataTime = new DateTime();

return String.valueOf(dataTime.getMillis());

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。