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;importjava.net.HttpURLConnection;importjava.net.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 com.google.common.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());

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java ajax 导入excel_Ajax asp.net 导入Excel

$("#btnUploadExcelSave").click(function () {var fileObj document.getElementById("file").files[0]; // js 获取文件对象var FileController "../FileHandler.ashx?type3"; // 接收上传文件的后台地址// FormData 对象var form new Form…

java 外卖订餐系统_java外卖订餐系统小项目

本文实例为大家分享了java外卖订餐系统的具体代码,供大家参考,具体内容如下执行结果:通过选择功能序号,执行响应的功能:代码实现:package 外卖订餐系统;/** 代码优点,使用 循环:* 显…

mysql 性能问题_mysql性能问题

性能优化的目的是什么呢?(合理利用可利用的资源)性能优化的方向:硬件方面:CPU、内存、IO、网络、硬盘、显卡软件方面:mysql这个软件内部优化,比如sql、算法,一些配置项目方面:需求设计、架构优化…

java 字符串包含某个字符_java中判断字符串中是否包含某个特定字符串的方法有哪些...

判断一个字符串是否包含某个子串的n种方法:1、startsWith()方法2、contains()方法3、indexOf方法startsWith()方法这个方法有两个变体,用于检测字符串是否以指定的前缀开始。此方法定义的语法如下:public boolean startsWith(String prefix, int toffset…

java socket 判断是否断开_Linux Socket:如何在客户端程序中检测断开的网络?

仅在调用write()函数时才能检测到未插入的以太网电缆 . 这是因为tcp堆栈的tcp重传没有你的意识 . 这是解决方案 .即使您已经为应用程序套接字设置了keepalive选项,但是如果您的应用程序一直在套接字上写入,您无法及时检测到套接字的死连接状态 . 那是因为…

java backbone_在Backbone.js中发出POST请求

我有一个RESTful服务器,它接受url编码的参数 .就我而言,发帖请求https://我的服务器:8443 / test / auth将请求标头设置为Content-Type:application / x-www-form-urlencoded并传递参数username myusername password …

java的方法调用中分不清_java中不太清晰的知识点

一、什么包需要导入,什么包不需要导入1.java.lang包的内容是自动导入的,不需要手动导入,其它必须手动导入。2.java.io.OutputStreamWrite已经是完整的类,无需再导入,而printWrite这个类,并不是调用完整的类…

纪念品分组java_纪念品分组 ——易懂、简介、技巧(Java代码)

我的思路:1、先排序2、两层循环嵌套,外面的一层从数组末尾开始,里面一层从头开始遍历,首先满足的条件就是这两个数都不能是 NULL 的,并且两个物品的价值加起来不大于最大价值,都满足之后就把两个物品都赋值…

java生命小游戏_Java修炼——飞机生存小游戏

在学习了java入门的课程之后,自己动手跟着老师写的一个小游戏,用的是Frame。总共有七个类。1.飞机游戏的主窗口(MyGameFrame)继承Frame。package com.bjsxt.plane;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Gr…

java 线程类 通信_Java 中利用管道实现线程间的通讯

在Java 语言中,提供了各种各样的输入输出流(stream),使我们能够很方便的对数据进行操作,其中,管道(pipe)流是一种特殊的流,用于在不同线程(threads)间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中…

java整型缓存_JAVA整型包装类的缓存策略

Java Integer的缓存策略public classJavaIntegerCache {public static voidmain(String... strings) {Integer integer1 3;Integer integer2 3;if (integer1 integer2)System.out.println("integer1 integer2");elseSystem.out.println("integer1 ! integer2&q…

java年利润编程题_[编程入门]利润计算-题解(Java代码)

![](/image_editor_upload/20200216102044_14158.png)这也是简单的分类问题,用if进行分类后就可以用switch进行分类计算利润代码如下:package javaapplication;import java.util.Scanner;public class JavaApplication{public static void main(String[]…

java面向方面编程_面向方面编程的介绍----基本概念

面向对象的编程中常用的概念是:继承、封装、多态。在面向方面的编程中常使用的概念是:advices/interceptors, introductions, metadata, and pointcuts。AOP 面向方面编程的介绍----基本概念(3)面向方面的编程思路很简单。从面向过程、函数的编程到面向对…

链队列的基本运算java_链式队列基本操作的实现问题

问题描述:用链式存储方式实现队列的基本操作涉及变量:front:Node型自定义变量,指向队首元素rear:Node型自定义变量,指向队尾元素涉及教材:《数据结构——Java语言描述(第2版)》 清华大学出版社大…

mysql数据库优化看的书_MySQL 数据库优化,看这篇就够了

点击上方"IT牧场",选择"设为星标"技术干货每日送达!来源:segmentfault.com/a/1190000018631870前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相…

python 升级所有库_自动更新Python所有第三方库

一般python用得比较久以后,就会安装很多第三方的库。比如这是我的pip list情况:pip list而且一屏还显示不完。通过如下命令可以看到需要更新的第三方库:pip list -o需要更新的库而pip提供的更新命令只能一个个的更新...pip install -U 库名 #…

java kryo register_java相关:Kryo框架使用方法代码示例

java相关:Kryo框架使用方法代码示例发布于 2021-1-21|复制链接摘记: Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kr ..Kryo框架的source已…

java 反射 类变量_java反射机制取出model类的所有变量,以及value

工作上遇到个问题,顺便解决了,希望对大家有帮助package com.zuidaima.util;public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InstantiationException {Class> obj Class.forName("com.roi…

php 去掉不可见字符串,php去掉指定字符串的办法

php去掉指定字符串的办法:首先创建一个PHP示例文件;然后定义字符串;最后通过“str_replace(array("_","",""),"",$str);”方法去掉指定字符串即可。推荐:《PHP视频教程》用正则可以解决问…

php开发地图导航,php 实现百度地图(很详细出来的地图)

百度地图搜索--leyangjunvar map new BMap.Map("container");map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);var local new BMap.LocalSearch(map, {renderOptions: {map: map, panel: "results"}});var opts {anchor: BMAP_ANCHOR_TOP_RIGH…