java用json怎么传multipartfile类型???

图片说明
如图 怎么用json格式传multipartfile数据???求指教

2个回答

用dateformat尝试一下,网上有demo

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
调用post接口怎么传MultipartFile[] files参数?
``` ``````接口信息: public Response<?> upload(@RequestParam(value="files",required=false) MultipartFile[] files,@RequestParam("title") String title,@RequestParam("content") String content) {}; 调用接口: public Response up(@RequestBody Map map){ try { //获取token String token = userAuthenticationHelper.getGroupOAuthToken(); HttpHeaders headers = new HttpHeaders(); if (token != null) { token = token.trim(); token = token.toUpperCase().contains("BEARER") ? token : "bearer " + token; headers.add("Authorization", token); } // MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8"); headers.setContentType(type); String id = String.valueOf(map.get("id")); RestTemplate r = new RestTemplate(); MultiValueMap<String, Object> param = new LinkedMultiValueMap<>(); List<FileSystemResource> files = new ArrayList<FileSystemResource>(); files.add(new FileSystemResource(new File("E:\\\\hello.doc"))); param.add("files", files); param.add("title", "test.txt"); param.add("content", "test.txt"); HttpEntity<Object> entity = new HttpEntity<>(param,headers); ResponseEntity<Object> dd = r.exchange("http://localhost:30156/v1/ticket/report", HttpMethod.POST, entity, Object.class); System.out.println(dd); return Response.success("上报工单成功!"); } catch (Exception e) { e.printStackTrace(); return Response.fail("上传工单失败!"); }; 不上传文件调用接口是能行的;上传文件报java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String ![图片说明](https://img-ask.csdn.net/upload/201906/12/1560308586_624667.jpg) java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String at org.springframework.http.converter.FormHttpMessageConverter.writeForm(FormHttpMessageConverter.java:292) at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:254) at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:89) at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:849) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:617) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:498) at com.chinamobile.epic.merge.global.ticket.rest.GlobalTicketListController.up(GlobalTicketListController.java:243) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at com.chinamobile.Application$LoginFilter.doFilter(Application.java:60) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at com.chinamobile.epic.oauth.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
springBoot接收MultipartFile文件报错
spring boot用MultipartFile作为参数接收文件报错,代码如下 ``` @ResponseBody @RequestMapping(value = "skuCreate", produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.POST) public HttpResponse<String> skuCreate(@RequestParam(value = "file") MultipartFile file) { return ""; } ``` 报错如下: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"])
spring boot表单同时上传文件和json
<form> <input name=filename type="file"> <input type="text" > <form> @PostMapping("vlues") public void addBlackList(HttpServletRequest request, HttpServletResponse response, @RequestParam("filename") MultipartFile file) throws IOException {......} 如上;表单接收一个文件或者文本,文本以JSON的格式POST上传,文件和文本都可以不传其中一个。后台代码怎么写才可以实现文件不传???直接用springboot的MultipartFile,不传文件会报错。救救孩子!!!
springcloud feign 调用服务上传文件时出现问题
报错 There was an unexpected error (type=Internal Server Error, status=500). Type definition error: [simple type, class java.io.FileDescriptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.Collections$SingletonMap["file"]->org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"]) * feign.codec.EncodeException: Type definition error: [simple type, class java.io.FileDescriptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.Collections$SingletonMap["file"]->org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"]) at feign.ReflectiveFeign$BuildEncodedTemplateFromArgs.resolve(ReflectiveFeign.java:376) at feign.ReflectiveFeign$BuildTemplateByResolvingArgs.create(ReflectiveFeign.java:224) at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:74) at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103) at com.sun.proxy.$Proxy195.upimagefile(Unknown Source) at com.xieyang.xyonlineeducationprovide.web.UserController.upheadimage(UserController.java:162) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at ``` ``` 服务端的代码 @Autowired private ossFileService oss; @RequestMapping("/upimagefile") public void upimagefile(@RequestPart MultipartFile file) { String upfile = oss.upfile(file); if(StringUtils.equals(upfile,"error")){ System.out.println("上传图片失败"); } else { System.out.println("成功上传图片"); } } ``` 客户端的代码 @FeignClient(value = "ALIYUNFILE",configuration=aliyunFileFeign.Myconfig.class ) public interface aliyunFileFeign { @Headers("Content-Type:multipart/form-data") @RequestMapping(value = "/upimagefile", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}) public void upimagefile(@RequestPart MultipartFile file); @Configuration public class Myconfig{ @Autowired private ObjectFactory<HttpMessageConverters> messageConverters; @Scope("prototype") @Primary @Bean public Encoder feignFormecoder(){ return new SpringFormEncoder(new SpringEncoder(messageConverters)); } @Bean public feign.Logger.Level multipartLoggerLevel(){ return Logger.Level.FULL; } } } ``` springboot为2.1.9 这是jackson的依赖版本 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.10</version> </dependency>
多个文件+表单关联的上传问题
我最近在写一个接口 需求是:![图片说明](https://img-ask.csdn.net/upload/201905/21/1558409862_479961.png) (检查结果会有多个 而且每个检查结果有三个参数 内容 状态 还有文件) 我用的接收类型是 ``` @RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) ``` 接收的参数是 ``` @RequestBody HashMap<String, Object> map ``` 我的想法是:用 ``` map<String,List<Map<String,Object>>> ```这种格式来传 List里存放多个对象 我想用: 来转化files的类型 ``` MultipartFile[] files = (MultipartFile[]) map2.get("files"); ``` 这时候我用POSTMAN测试是通不过的 因为说传来的是string类型 不能转化为MultipartFile # 问题: **所以我想问下 我这么写是能行的通吗?如果能行得通 我要怎么测试呢 如果不能的话 我要怎么写这个逻辑好呢? 谢谢啦 ** _我最开始是想采用每个请求都调用一次单独的表单提交接口,有几个检查结果就调用几次接口,后来我同事说不好,中间失败了也不能回滚,所以我就想着这种方法,查了半天也没找到好的解决方法,各位大佬帮帮忙_
Ueditor 跨域上传图片,图片回显不能接收到json数据问题。
问题描述:搭建了俩服务器,一个资源服务器,一个应用服务器, 当使用Ueditor上传功能时,必须将图片上传到资源服务器,也就是远程服务器时,会出现跨域问题,一个应用服务器时用Ueditor上传图片到一个应用中,没有问题,json也可以接收到,但上传到资源服务器时,上传的Controller可以正常执行、返回json数据,但接收不到json数据,导致图片无法回显 使用 document.domain = "http://localhost";会报错,不知如何配置。 菜鸟一枚,请高手指点一二 **1.downFile=文件服务器 / tuji=项目目录** (文件服务器地址为:http://localhost:8080 项目目录地址:http://localhost:80) ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502443327_119661.png) ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502443386_267950.png) . Ueditor.all.js报错的位置 ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502444900_772575.png) **2.jsp页面代码** ``` <%@ page language="java" contentType="text/html; charset=UTF-8" import="com.tuji.utils.FileUtil" pageEncoding="UTF-8"%> <%@ page trimDirectiveWhitespaces="true" %> <% String contextPath = FileUtil.httpPath; %> <%-- <% String contextPath = "http://"+request.getServerName()+":"+request.getLocalPort()+request.getContextPath(); %> --%> <!DOCTYPE html> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/third-party/jquery-1.10.2.js"></script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/ueditor.all.js"> </script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/lang/zh-cn/zh-cn.js"></script> <script> //编辑器资源文件根路径 最好在ueditor.config.js中配置 window.UEDITOR_HOME_URL = "<%=contextPath%>/"; //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 var ue = UE.getEditor('editor',{initialFrameHeight: 500,initialFrameWidth:800,maximumWords:3000,elementPathEnabled:false}); //复写UEDITOR的getActionUrl 方法,定义自己的Action UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl; UE.Editor.prototype.getActionUrl = function(action) { if (action == 'uploadimage' || action == 'uploadfile') { var id = $('#carInfoId').val(); return '<%=contextPath %>/file/ueditorUpload'; } else { return this._bkGetActionUrl.call(this, action); } }; // 复写UEDITOR的getContentLength方法 解决富文本编辑器中一张图片或者一个文件只能算一个字符的问题,可跟数据库字符的长度配合使用 UE.Editor.prototype._bkGetContentLength = UE.Editor.prototype.getContentLength; UE.Editor.prototype.getContentLength = function(){ return this.getContent().length; } </script> <html> <head> <%@ include file="../../common/common.jsp"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="${ctx}/resource/web/sys/sys/sys.css"> <link rel="stylesheet" type="text/css" href="${ctx}/resource/web/common/css/backstageCommon.css"> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/ueditor.config.js"></script> --%> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/ueditor.all.min.js"> </script> --%> <!-- 建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败 --> <!-- 这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文 --> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/lang/zh-cn/zh-cn.js"></script> --%> </head> <body class="bgColor2" style="text-align: center;"> <div style="width: 20%;margin: 0 auto;margin-top: 10%;"> <form id="saveForm" action="${ctx }/sys/opus/saveContent" method="post"> <input type="hidden" name="id" value="${opus.id }"> <input type="button" id="close" class='bgColor2 borderColor2 fontColor1 btn alertBtn pageBtn' style='margin: 0 auto;font-size:12px;margin-bottom: 80px;' value="关&nbsp;闭"> <input type="button" id="saveContent" class='bgColor2 borderColor2 fontColor1 btn alertBtn pageBtn' style='margin: 0 auto;font-size:12px;margin-bottom: 80px;' value="保&nbsp;存"> <br/> <div style="color: white;margin-bottom: 30px;">${opus.name }</div> <script name="content" id="editor" type="text/plain"> ${opus.content } </script> </form> </div> <%@ include file="../../common/upload.jsp"%> </body> <!-- 富文本编辑器 --> <script type="text/javascript"> // document.domain = "http://localhost:8080"; $("#close").click(function() { window.close(); }); var isFirst = true; $("#saveContent").click(function() { if(!isFirst){ return; } $("#saveForm").submit(); return; $.ajax({ type: "POST", url: "${ctx}/sys/opus/saveContent", data:{ "id" : '${opus.id}', "content" : $("#editor").val() }, dataType : "json", success: function(data) { if(data.result == 0){ alert("保存成功!") }else{ alert(data.msg); } } }); }); $(".pageBtn").hover(function() { $(this).removeClass("bgColor2"); $(this).addClass("bgColor1"); $(this).removeClass("fontColor1"); $(this).addClass("fontColor3"); $(this).css("transition", "all 0.25s ease"); }, function() { $(this).removeClass("bgColor1"); $(this).addClass("bgColor2"); $(this).removeClass("fontColor3"); $(this).addClass("fontColor1"); $(this).css("transition", "all 0.5s ease"); }); </script> </html> ``` ``` **3.接收Ueditor上传的Conroller** /** * Ueditor 文件上传Action * @param req * @return UEDITOR 需要的json格式数据 */ @CrossOrigin @RequestMapping(value="ueditorUpload",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public Map<String,Object> upload(HttpServletRequest request){ Map<String,Object> result = new HashMap<String, Object>(); MultipartHttpServletRequest mReq = null; MultipartFile file = null; InputStream is = null ; String fileName = ""; try { mReq = (MultipartHttpServletRequest)request; // 从config.json中取得上传文件的ID file = mReq.getFile("upfile"); // 原始文件名 UEDITOR创建页面元素时的alt和title属性 String originalFileName = file.getOriginalFilename(); String filePath = ""; if (!file.isEmpty()) { try { String newName = UUID.randomUUID().toString() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String path = FileUtil.getUeditorDownPath(); FileUtil.uploadFile(request, new BufferedInputStream(file.getInputStream()), path + newName); filePath = path + newName; Long fileSize = file.getSize(); SysFile sysFile = new SysFile(); sysFile.setPath(filePath); sysFile.setSize(fileSize + ""); sysFile.setName(originalFileName); sysFileServiceI.saveOrUpdate(sysFile); result.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容 result.put("url", FileUtil.getHttpPath() + filePath); result.put("title", originalFileName); result.put("original", originalFileName); } catch (IOException e) { e.printStackTrace(); result.put("success", false); result.put("msg", "服务器异常,请联系管理员!"); } return result; } else { result.put("success", false); result.put("msg", "文件内容为空!"); return result; } } catch (Exception e) { System.out.println(e.getMessage()); result.put("state", "文件上传失败!"); result.put("url",""); result.put("title", ""); result.put("original", ""); System.out.println("文件 "+fileName+" 上传失败!"); } return result; } ```
Swift Alamofire调用java的图片上传http接口
1.java的http接口有两个参数,一个字符串,一个MultipartFile图片文件 接口代码如下: ``` @ResponseBody @RequestMapping(value="/uploadUserImg/{userName}",method=RequestMethod.POST) public Map<String,Object> uploadUserImg(@RequestParam("userImg") MultipartFile imgFile,@PathVariable("userName") String userName) { } 或者 @ResponseBody @RequestMapping(value="/uploadUserImg",method=RequestMethod.POST) public Map<String,Object> uploadUserImg(@RequestParam("userImg") MultipartFile imgFile,@RequestParam"userName") String userName) { } ``` 请问怎样用Swift Alamofire编写调用方法,我在接口里打断点,下面的方法调用总是进不去接口 ``` class FileAPI { static func uploadImage(userImage: Data, _ reqCallBack: @escaping(Bool, JSON?, APIError?) -> Void) { let maxByte = 1024 * 1024 * 2 if userImage.count > maxByte { reqCallBack(false, nil, APIError.uploadFileFail(msg: "图片大于2M,无法上传")) return } let url = "http://192.168.1.232:8088/httpServiceInter/uploadUserImg/admin123" Alamofire.upload( multipartFormData: { multipartFormData in multipartFormData.append(userImage, withName: "userImg") }, to: url, method: .post, headers: ["Content-Type": "application/x-www-form-urlencoded"], encodingCompletion: { encodingResult in switch encodingResult { case .success(let upload, _, _): upload.responseJSON { response in let json = JSON(response.data!) reqCallBack(true, json, nil) } case .failure(let error): reqCallBack(false, nil, APIError.unknow) print(error) } } ) } ``` 错误提示: [Request]: POST http://192.168.1.232:8088/httpServiceInter/uploadUserImg/admin123 [Response]: <NSHTTPURLResponse: 0x6000026df840> { URL: http://192.168.1.232:8088/httpServiceInter/uploadUserImg/admin123 } { Status Code: 400, Headers { Connection = ( close ); "Content-Language" = ( en ); "Content-Length" = ( 1123 ); "Content-Type" = ( "text/html;charset=utf-8" ); Date = ( "Tue, 04 Jun 2019 05:34:50 GMT" ); Server = ( "Apache-Coyote/1.1" ); } } [Data]: 1123 bytes [Result]: FAILURE: responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.})) [Timeline]: Timeline: { "Request Start Time": 581319290.237, "Initial Response Time": 581319290.455, "Request Completed Time": 581319290.524, "Serialization Completed Time": 581319290.547, "Latency": 0.218 secs, "Request Duration": 0.287 secs, "Serialization Duration": 0.023 secs, "Total Duration": 0.310 secs } (lldb)
SpringMvc+layui 实现图片上传更新头像 但是总弹出接口异常(很急!!!!)
![图片说明](https://img-ask.csdn.net/upload/201905/25/1558713715_871569.png) **前端请求时候 url 500** ``` <script src="${pageContext.request.contextPath}/resources/layui.all.js"></script> <script> $ = layui.$; var $ = layui.jquery var form = layui.form; var element=layui.element; var layer=layui.layer; var upload = layui.upload; $("#nav").load("/filmos/nav"); upload.render({ elem: '#choose' , auto: false , url: '${pageContext.request.contextPath}/user/updateuserimg' ,accept: 'file' , bindAction: '#upload' , choose: function (obj) {//选择文件的回调,obj为选中的文件 //将每次选择的文件追加到文件队列 var files = obj.pushFile(); //预览选中的文件(本地文件) obj.preview(function (index, file, result) { $('#user-img').attr('src', result); $('#upload').css('display', 'block'); }); } , before: function (obj) {//文件上传前的回调 } , done: function (res) { if (res.code==200) { location.href = "${pageContext.request.contextPath}/ok" }else { //演示失败状态,并实现重传 return layer.msg(res.msg); } } ,error: function(res) { console.log(res); console.log(res.code); console.log(res.msg); var demoText = $('#demoText'); demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>'); demoText.find('.demo-reload').on('click', function () { uploadInst.upload(); }); } }); </script> </body> </html> ``` **js代码** ![图片说明](https://img-ask.csdn.net/upload/201905/25/1558713861_529370.png) **但是实际上功能是实现了的 数据库中也更新了 但是每次都会弹出接口异常** ``` //上面还有个requestmapping是user 通过user/updateuserimg到这个方法 @ResponseBody @RequestMapping(value = "/updateuserimg", method = {RequestMethod.POST,RequestMethod.GET}) private JSONObject updateUserImg(@RequestParam(value = "file", required = false) CommonsMultipartFile multipartFile, HttpSession session) throws IOException{ User user = (User) session.getAttribute("user"); JSONObject jsonObject=new JSONObject(); if (multipartFile != null && multipartFile.getSize() > 0&& user!=null) { userService.updateUserImg(user, multipartFile.getInputStream(), multipartFile.getOriginalFilename()); session.setAttribute("user", userService.login(user)); jsonObject.put("code",200); jsonObject.put("msg","更新成功!"); jsonObject.put("src",user.getUserImg()); return jsonObject; } else { jsonObject.put("code",400); jsonObject.put("msg","更新失败!"); return jsonObject; } } } ``` Contoller的代码 ![图片说明](https://img-ask.csdn.net/upload/201905/25/1558713969_417859.png) ssm配置的 ![图片说明](https://img-ask.csdn.net/upload/201905/25/1558714077_867660.png) ![图片说明](https://img-ask.csdn.net/upload/201905/25/1558714083_361418.png)![图片说明](https://img-ask.csdn.net/upload/201905/25/1558714089_172810.png)
java实现文件上传 上传成功后的文件名为什么改变了
@RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public Json upload(@RequestParam(value = "imageFile") MultipartFile file, HttpServletRequest req, HttpServletResponse resp) throws IOException { String temppath = "/file"; Json j = new Json(); // 构建文件名称multipartFile String oldName = file.getOriginalFilename(); if (!oldName.endsWith("jpg") && !oldName.endsWith("png")) { // 判断是否是图片文件 j.setMsg("上传文件应该是jpg或png格式"); j.setSuccess(false); return j; } // 获取文件的后缀 String suffix = oldName.substring(oldName.indexOf('.')); String name = String.valueOf(System.currentTimeMillis()).concat(suffix); String path = req.getSession().getServletContext() .getRealPath(temppath); try { File filepath = new File(path); if (!filepath.exists()) { filepath.mkdir(); // 创建目录 } OutputStream os = new FileOutputStream(filepath.getPath() + "/" + name); InputStream is = file.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); } os.flush(); os.close(); is.close(); j.setSuccess(true); j.setMsg("上传成功"); } catch (Exception e) { j.setMsg("上传失败"); j.setSuccess(false); e.printStackTrace(); } j.setErrorinfo(req.getContextPath() + temppath + "/" + name); j.setObject(path + "\\" + name); return j; } 上传后的文件: ![图片说明](https://img-ask.csdn.net/upload/201606/03/1464931428_136171.png)
SpringMVC+ajax上传文件+提交表单数据报错The current request is not a multipart request
AJAX var commercialName=$("#commercialName").val() var commerciaPhone=$("#commerciaPhone").val() var commerciaSite=$("#commerciaSite").val() console.log(commercialName) var file=document.getElementById('file').files var formData=new FormData() formData.append("file",file[0]) $.ajax({"url":"/systemController/merchantController/contact", "encType": 'multipart/form-data', "processData": false, "contentType":false, "data":{"file":formData,"commercialName":commercialName,"commerciaPhone":commerciaPhone, "commerciaSite":commerciaSite}, "type":"post", "dataType":"json", "success":... ``` JAVA ``` @RequestMapping(value = "contact" ,method = RequestMethod.POST) @ResponseBody public Dto contact( MultipartFile file, DbBusinessInformation businessInformation, HttpServletRequest request) ``` ``` 也找了很多方法,还是没办法解决
接受app传过来的二进制流但是传多张的话会变成一张
public AjaxJson upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException { AjaxJson json = new AjaxJson(); //创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); //判断 request 是否有文件上传,即多部分请求 if(multipartResolver.isMultipart(request)){ //转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request; //取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); System.out.println("**************"); System.out.println(iter); while(iter.hasNext()){ //记录上传过程起始时的时间,用来计算上传时间 int pre = (int) System.currentTimeMillis(); //取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if(file != null){ //取得当前上传文件的文件名称 String myFileName = file.getOriginalFilename(); //如果名称不为“”,说明该文件存在,否则说明该文件不存在 if(myFileName.trim() !=""){ System.out.println("111111111111111"); System.out.println(myFileName); //重命名上传后的文件名 String fileName = "demoUpload" + file.getOriginalFilename(); String path = "F:/" + fileName; File localFile = new File(path); file.transferTo(localFile); } } //记录上传该文件后的时间 int finaltime = (int) System.currentTimeMillis(); System.out.println(finaltime - pre); } } return json; } 这个是什么原因呢 求解决办法
使用layui的富文本编辑器 上传图片后不能显示图片 只能显示图片名
![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320913_930043.png)![图片说明](https://img-ask.csdn.net/upload/201903/23/1553320929_255574.png) <div class="layui-form-item layui-form-text"> <label class="layui-form-label">历史</label> <div class="layui-input-block"> <textarea id="history" name="article_desc" lay-verify="article_desc" placeholder="" class="layui-textarea">请输入历史</textarea> </div> <input type="hidden" id="introCont"> </div> ``` <!--编辑器--> <script> layui.use(['layedit','form'], function(){ var layedit = layui.layedit,$ = layui.jquery,form = layui.form; //构建一个默认的编辑器 layedit.set({ uploadImage: { url: '/File/uploadImg', type: 'post' } }); var index = layedit.build('history',{tool: [ 'strong' //加粗 ,'italic' //斜体 ,'underline' //下划线 ,'del' //删除线 ,'|' //分割线 ,'left' //左对齐 ,'center' //居中对齐 ,'right' //右对齐 ,'link' //超链接 ,'unlink' //清除链接 ,'face' //表情 ,'image' //插入图片 // ,'help' //帮助 ]}); //自定义验证规则 form.verify({ history: function(value){ if(value.length < 0){ return '历史不能为空'; } } ,article_desc: function(value){ layedit.sync(index); } }); //编辑器外部操作 var active = { content: function(){ //alert(layedit.getContent(index)); //获取编辑器内容 var str = layedit.getContent(index); //赋值到隐藏的标签 $("#introduce").val(""+ str +""); //console.log("视频简介内容:"+ $("#introCont").val()) } }; $('.layui-textarea').on('click', function(){ var type = $(this).data('type'); active[type] ? active[type].call(this) : ''; }); }); </script> ``` package com.yunce.web.controller; import com.yunce.web.Setting; import com.yunce.web.utils.FileUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2019/3/22. */ @Controller @RequestMapping(value = "/File") public class FileController { public static Logger LOG = LoggerFactory.getLogger(FileController.class); @Autowired private Setting setting; @RequestMapping(value = "/uploadImg", method = RequestMethod.POST) @ResponseBody public Map<String, Object> uploadImg(@RequestParam (value = "file")MultipartFile[] files, HttpServletRequest request) { String url = setting.local_url; String saveFilePath = setting.image_dir; Map<String, Object> map = new HashMap<>(); Map<String, Object> data = new HashMap<>(); for (int i = 0, length = files.length; i < length; i++) { if (files[i] != null && !files[i].isEmpty()) { LOG.info("图片大小:" + files[i].getSize() / 1024 + "KB"); //获取图片的文件名 String fileName = files[i].getOriginalFilename(); //获取图片的扩展名 String extensionName = fileName.substring(fileName.lastIndexOf(".") + 1); //新的图片文件名 = 年月日+随机数 +"."图片扩展名 String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date()); Integer num = (int) ((Math.random() * 9 + 1) * 100000); String newFileName = String.valueOf(dateStr + num) + "." + extensionName; FileUpload.saveFile(newFileName, files[i], saveFilePath); url = url + "/" + newFileName; data.put("src", url); data.put("title", newFileName); map.put("code", 0); map.put("msg", "上传成功"); map.put("data", data); } } return map; } } /* String tempPath="f:/upload"; Map<String,Object> map=new HashMap<>(); Map<String,Object> data=new HashMap<>(); String oldName=file.getOriginalFilename(); System.out.println("图片名字:oldName is:"+oldName); String tempName = System.currentTimeMillis() + ""; System.out.println("tempName is:" +tempName); //以文件名命名的文件夹 String tempFileDir = tempPath + "/" + tempName; File parentFileDir = new File(tempFileDir); //若不存在 就新建 if (!parentFileDir.exists()) { parentFileDir.mkdirs(); } //新文件名 获取当前名+文件后缀 String newName = tempName + oldName.substring(oldName.lastIndexOf(".")); //数据库img的src String src="/upload/"+tempName+"/"+newName; System.out.println("图片名字:newName is:"+newName); try { //存放文件 (文件名,文件) file.transferTo(new File(tempFileDir,newName)); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }*/ ``` ```
ant+vue+springboot 上传文件时接收不到文件
``` <a-upload name="file" listType="picture-card" :fileList="fileList" :multiple="true" @preview="handlePreview" :beforeUpload="beforeUpload" @change="handleChange" > <div v-if="fileList.length < 1"> <a-icon type="plus" /> <div class="ant-upload-text">Upload</div> </div> </a-upload> ``` js代码如下 ``` var formData = new FormData() formData.append('file', this.fileList[0]); formData.append('userid', '1'); formData.append('systemid', '886'); this.axios( { method: 'post', url: 'http://localhost:8086/rest/uploadFileByMulti', processData: false, data: formData }) .then((response) => { alert(JSON.stringify(response)) }) .catch(function (error) { console.log(error) }) ``` 后台接受代码如下 ``` @RequestMapping("/uploadFileByMulti") @ResponseBody public AjaxResult uploadFileList(@RequestParam("file") MultipartFile file String userid, String systemid) { ...... } ``` 上传时一直报file为空
ajax请求上传文件一直报404,求救呀,各位大佬!!~~~~。
ajax请求上传文件一直报404,求救呀,各位大佬!!~~~~。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>金山项目</title> <script type="text/javascript" charset="utf-8" src="jquery/jquery.min.js"></script> <script type="text/javascript"> function uploadExcel(){ //导入文件 var formData = new FormData(); formData.append("file",$("#upload")[0].files[0]); $.ajax({ url:'/excel/insertExcel', type:'POST', data:formData, // 告诉jQuery不要去处理发送的数据 processData : false, // 告诉jQuery不要去设置Content-Type请求头 contentType : false, success:function(map){ alert(map.message); }, dataType:'json', }) } </script> </head> <body> <input id="upload" type="file" value="选择文件"/> <button onclick="uploadExcel()">点击上传</button> </body> </html> ``` @Controller @RequestMapping("excel") public class InsertExcelController { @Autowired private InsertExcelService insertExcelServiceImpl; /** * 导入Excel */ @RequestMapping("insertExcel") @ResponseBody public Map<String,Object> insertExcel(@RequestParam(value = "file",required = false)MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); String result = insertExcelServiceImpl.insertExcel(file); map.put("message",result); return map; } } ``` `````` ``` ```
微信小程序开发,mvc能接受到请求,但是接受不到其他的属性?
前端代码 ``` wx.uploadFile({ url: app.globalData.url + "wxUploadImage.do",//请求地址 filePath: tempFilePaths[0], name: 'file', header: { "Content-Type": "multipart/form-data", 'accept': 'application/json' }, formData: { 'userId': app.globalData.user_login.data.workcode }, success: function (res) { var data = res.data; data = JSON.parse(data); console.log(data.data); that.setData({ isUploadFinish: true, imgUrl: tempFilePaths[0], uploadImgUrl:data.data }); //do something } }); ``` java代码 ``` @ResponseBody @RequestMapping("/wxUploadImage") public String upload(HttpServletRequest request, @RequestParam(value="file", required=false) MultipartFile file) { Map<String, Object> dataMap = new HashMap<String, Object>(); try { System.out.println("执行upload"); request.setCharacterEncoding("UTF-8"); String userId = request.getParameter("userId"); System.out.println("userId="+userId); if(!file.isEmpty()) { String fileName = file.getOriginalFilename(); String path = null; String type = null; type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null; System.out.println(type); if (type != null) { if ("GIF".equals(type.toUpperCase())||"PNG".equals(type.toUpperCase())||"JPG".equals(type.toUpperCase())) { // 项目在容器中实际发布运行的根路径 String realPath = request.getSession().getServletContext().getRealPath("/"); // 自定义的文件名称 String trueFileName = String.valueOf(System.currentTimeMillis()) +"--"+userId+"."+ type; // 设置存放图片文件的路径 path = "/upload/signFault/" + trueFileName; System.out.println("realPath==="+realPath); file.transferTo(new File(realPath + path)); dataMap.put(DATA, path); dataMap.put(RESPONSE, SUCCESS); return JsonUtils.toJson(dataMap); }else { dataMap.put(RESPONSE, FAILURE); dataMap.put(MSG, "请求异常"); return JsonUtils.toJson(dataMap); } }else { dataMap.put(RESPONSE, FAILURE); dataMap.put(MSG, "请求异常"); return JsonUtils.toJson(dataMap); } }else { dataMap.put(RESPONSE, FAILURE); dataMap.put(MSG, "请求异常"); return JsonUtils.toJson(dataMap); } } catch (Exception e) { e.printStackTrace(); dataMap.put(RESPONSE, FAILURE); dataMap.put(MSG, "请求异常"); return JsonUtils.toJson(dataMap); } } ``` 后台接受不到那个userid,只显示执行了update 最主要的是测试服能用,正式服就拉稀了
前端接收不到后台的值,求大神解决,在线等,解决了速度结贴。。。。。。。。。。。。。。。。。。。。
package com.togest.emis.modules.g6c.web; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import com.togest.emis.framework.orm.Page; import com.togest.emis.framework.orm.PropertyFilter; import com.togest.emis.framework.utils.ConvertUtils; import com.togest.emis.framework.utils.JSONParserUtils; import com.togest.emis.framework.utils.RequestParamUtils; import com.togest.emis.framework.utils.StringHelper; import com.togest.emis.modules.g6c.entity.Download; import com.togest.emis.modules.g6c.service.Downloadservice; import com.togest.emis.modules.system.cache.SystemCache; import com.togest.emis.modules.system.config.SystemConstants; /** * * @author mmk * * */ @Controller @RequestMapping(value = "/6c/system/download") public class DownloadController { @Autowired private Downloadservice service; @RequestMapping(method = RequestMethod.GET) public String list(Model model, HttpServletRequest request, String id) { model.addAttribute("psn_id", id); model.addAttribute(SystemConstants.NAV_PATH, SystemCache.getPath(id, RequestParamUtils.getUserID(request))); return "/6c/download"; } @RequestMapping(value = "getPage", method = RequestMethod.POST) public void getPage(HttpServletRequest request, HttpServletResponse response, String name, String address ,Model model) { Map<String, Object> map = new HashMap<String, Object>(); try { List<PropertyFilter> filters = PropertyFilter .buildFromHttpRequest(request); Page page = RequestParamUtils .getPage(request, new Page<Download>()); if (!page.isOrderBySetted()) { page.setOrderBy(SystemConstants.OrderByField); page.setOrder(Page.ASC); page = service.findPage(page, filters); } map.put(SystemConstants.EASYTABLE_PAGE_TOTAL_INDEX, page.getTotalCount()); map.put(SystemConstants.EASYTABLE_PAGE_RESULT_INDEX, page.getResult()); } catch (Exception e) { e.printStackTrace(); } try { JSONParserUtils.write(response, JSONObject.fromObject(map) .toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "save", method = RequestMethod.POST) public void save(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model,HttpServletResponse response, Download d,Map<String,Object> map) { String path = request.getSession().getServletContext() .getRealPath("download"); String fileName = request.getParameter("name"); String fileContent = file.getOriginalFilename(); String fileType = fileContent.substring(fileContent.lastIndexOf(".")); String fileAll = fileName+fileType; String address = path+"\\"+fileAll; String file_path = address.substring(address.lastIndexOf("download")); String fileUrl = request.getContextPath() + "/download/" + fileAll; // //String fileName = new Date().getTime()+".jpg"; File targetFile = new File(path, fileAll); if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } map.put("fileAll", fileAll); model.addAttribute("address", address); model.addAttribute("path", path); model.addAttribute("fileAll", fileAll); model.addAttribute("fileUrl",fileUrl); model.addAttribute("fileName", fileName); System.out.println("+++++++++++++++"+ fileAll); if (StringHelper.isBlank(d.getId())) { d.setId(null); } //d.setFile(fileAll); d.setAddress(file_path); service.save(d); map = new HashMap<String, Object>(); map.put("msg", "新增成功"); try { JSONParserUtils.write(response, JSONObject.fromObject(map) .toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "edit", method = RequestMethod.GET) public void edit(HttpServletRequest request, HttpServletResponse response) { String id = RequestParamUtils.getStringParamter(request, "id"); if (id != null) { Download d = service.get(id); try { Map<String, Object> map = ConvertUtils.objectToMap(d, new String[] { "id", "sort", "name", "address" }); JSONObject json = JSONObject.fromObject(map); JSONParserUtils.write(response, json.toString()); } catch (Exception e) { e.printStackTrace(); } } } @RequestMapping(value = "update", method = RequestMethod.POST) public void update(HttpServletResponse response, Download d) { service.save(d); Map<String, Object> map = new HashMap<String, Object>(); map.put("msg", "修改成功"); try { JSONParserUtils.write(response, JSONObject.fromObject(map) .toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "delete", method = RequestMethod.POST) public void delete(HttpServletResponse response, String id) { Map<String, Object> map = new HashMap<String, Object>(); String[] ids = id.split(","); service.delete(id); map.put("msg", "删除成功"); try { JSONParserUtils.write(response, JSONObject.fromObject(map) .toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "find", method = RequestMethod.POST) public String find(Model model, HttpServletRequest request) { List<Download> dlist = service.findAll(); // for(Download d :dlist){ // String dname =d.getName(); // String daddress = d.getAddress(); // request.setAttribute("dname", dname); // request.setAttribute("daddress", daddress); // } model.addAttribute("dlist", dlist); // ActionContext.getContext().getSession().put("dlist", dlist); // ActionContext.getContext().getValueStack().set("dlist", dlist); // request.setAttribute("dlist", dlist); return "/system/passport/login"; } } 这是控制器的代码 package com.togest.emis.modules.g6c.service; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.togest.emis.framework.orm.Page; import com.togest.emis.framework.orm.PropertyFilter; import com.togest.emis.modules.g6c.dao.DownloadDao; import com.togest.emis.modules.g6c.entity.Download; import com.togest.emis.modules.system.entity.P_Dictionary; @Service public class Downloadservice { @Autowired private DownloadDao dao; /** * 根据主键ID删除实体 * * @param id */ public void delete(String id) { dao.delete(id); } /** * 保存实体 * * @param entity */ public void save(Download entity) { dao.save(entity); } /** * 根据主键ID获取实体 * * @param id * @return */ public Download get(String id) { return dao.get(id); } /** * 查询所有 */ public List<Download> findAll(){ String hql ="FROM Download"; List<Download> list = dao.find(hql); //for(Download d : list){ //System.out.println("+++++++++++++"+d.getName()); //} return list; } public Page<Download> findPage(final Page<Download> page, final List<PropertyFilter> filters) { return dao.findPage(page, filters); } } 业务层代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/common/taglibs.jsp"%>
有人用过ajaxfileupload上传图片,然后用Jcrop去截图的么?有个问题请教下!
我用AjaxFileUpload把图片传上去了,然后返回图片的上传路径到前台<img>标签里,为什么返回的高度宽度都是0,然后自动生成的<div>下面的<img>标签也没有获取到src属性 ``` /** * 文件上传 * @param file * @param request * @param response * @return */ @RequestMapping(value = "/uploadFile.do") public @ResponseBody Map<String,Object> uploadFile(@RequestParam(value = "apkFile") MultipartFile file,HttpServletRequest request, HttpServletResponse response) { Map<String,Object> resMap = new HashMap<String,Object>(); //String classPath = this.getClass().getClassLoader().getResource("/").getPath(); String classPath = request.getRealPath("/"); if (file != null) { if (file.isEmpty()) { // 未选择文件 resMap.put("status", "未选择文件"); } else{ // 文件原名称 String originFileName = file.getOriginalFilename(); try { //这里使用Apache的FileUtils方法来进行保存 FileUtils.copyInputStreamToFile(file.getInputStream(), new File(classPath+uploadDir, originFileName)); resMap.put("status","ok"); resMap.put("imgUrl","../"+uploadDir+originFileName); } catch (IOException e) { resMap.put("status", "文件上传失败!"); e.printStackTrace(); } } } return resMap; } ``` 这是我的controller方法 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" href="../resources/css/jquery.Jcrop.min.css" type="text/css" /> <!-- <script src="../resources/js/common/jquery-1.11.3.js" type="text/javascript"></script> --> <script src="http://edge1u.tapmodo.com/global/js/jquery.min.js"></script> <script src="../resources/js/common/ajaxfileupload.js" type="text/javascript"></script> <script src="../resources/js/fileupload.js" type="text/javascript"></script> <script src="../resources/js/common/jquery.Jcrop.js"></script> <title>上传头像</title> </head> <body> 当前用户: ${userName} <input id="userId" value="${userId }" type="hidden" /> <div id="addApkWindows"> <div id="result"></div> 上传文件: <input type="file" id="apkFile" name="apkFile" /> <input type="button" value="上传" onclick="ajaxFileUpload()" /> </div> <form id="form_save" action="/user/save_portrait" style="display: none;"> <input type="hidden" id="img_left" name="left" value="0"> <input type="hidden" id="img_top" name="top" value="0"> <input type="hidden" id="img_width" name="width" value="0"> <input type="hidden" id="img_height" name="height" value="0"> <input type="hidden" id="img_rd" name="rd" value="0"> </form> <img src="" id="target" /> </body> </html> ``` 这是页面代码 ``` $(function() { $('#target').Jcrop(); }); function ajaxFileUpload() { //获取软件更新详情 var apkIntroduce = $("#apkInfo").val(); //开始上传文件时显示一个图片,文件上传完成将图片隐藏 //$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();}); //执行上传文件操作的函数,使用encodeURI方法,防止传输中文字符的时候出现乱码 var uploadUrl = encodeURI(encodeURI("uploadFile.do?apkIntroduce=" + apkIntroduce)); $.ajaxFileUpload({ //处理文件上传操作的服务器端地址(可以传参数,已亲测可用) url : uploadUrl, // url:basePath + "uploadApk.do?apkIntroduce="+apkIntroduce, secureuri : false, //是否启用安全提交,默认为false fileElementId : 'apkFile', //文件选择框的id属性 dataType : 'text', //服务器返回的格式,可以是json或xml等 success : function(data, status) { //服务器响应成功时的处理函数 var dataset = $.parseJSON(data); if (dataset.status == "ok") { $('#result').html("Apk上传成功"); $('#target').attr("src", dataset.imgUrl); } else if (dataset.status == "parm_is_empty") { $('#result').html("没有选择APK!"); } else { $('#result').html('Apk上传失败,请重试!!'); } }, error : function(data, status, e) { //服务器响应失败时的处理函数 console.log(e); console.log(data); $('#result').html('APK上传失败,请重试!!'); } }); $('#target').Jcrop(); } ``` ![](http://static.oschina.net/uploads/space/2015/1115/231553_hcvJ_2392241.png) 这是上传后的页面效果图
spring mvc做上传图片,文件小于10k就不生成临时文件了
这是spring-mvc.xml中的 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartRe solver"> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定所上传文件的总大小不能超过2000KB。注意maxUploadSize属性的限制 不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="2048000" /> <property name="maxInMemorySize" value="10240" /> </bean> 下面是方法: ``` @RequestMapping(value="uploadFile.do",method={RequestMethod.GET,RequestMethod.POST}) public String ajaxUpload(ModelMap mm,HttpSession ses,HttpServletRequest req ) throws Exception { try { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req; // 获得文件: MultipartFile upload = multipartRequest.getFile("upload"); String newFileName = new Date().getTime() + "_" + SesHelper.getSimUser(ses).getManageUser().getMuId() + getExtention(upload.getOriginalFilename()); CommonsMultipartFile cf= (CommonsMultipartFile)upload; DiskFileItem fi = (DiskFileItem)cf.getFileItem(); File targetFile = fi.getStoreLocation(); if(ArrayUtils.indexOf(imageExtentions, getExtention(upload.getOriginalFilename()).substring(1))!=-1){ **RemoteFileUtil.copyImage(targetFile, newFileName);** }else{ throw new BaseException("请确定是图片文件"); } handleSuc(mm); mm.put("msg", imgServerName+newFileName); } catch (Exception e) { handleErr(mm , e); } return JSON_COM; } ``` 上面的调这个方法 ``` public static synchronized void copyImage(File src, String filename) { try { **copy(src, filename);** } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("请检查服务器:" + serverIps[0] + ":" + serverPorts[0] + "是否连接通畅"); } } ``` 上面的调这个方法 ``` private static synchronized void copy(File src, String filename) throws UnknownHostException, IOException { for (int i = 0; i < serverIps.length; i++) { Socket client = new Socket(serverIps[i], Integer .parseInt(serverPorts[i])); OutputStream os = client.getOutputStream(); os.write((filename + ";").getBytes()); byte[] byteBuffer = new byte[1]; FileInputStream fos = new FileInputStream(src); BufferedInputStream bis = new BufferedInputStream(fos); System.out.println(filename); **while (bis.read(byteBuffer) != -1) { os.write(byteBuffer); }** os.flush(); bis.close(); fos.close(); os.close(); client.close(); System.out.println(client.getLocalAddress()); } } ``` 下面是页面 ``` <script type="text/javascript"> axUpload=true; var fileName = ""; function ajaxuploadsubmit() { var index = layer.load(); $('#uploadForm').ajaxSubmit({ url:'${siteUrl}/file/uploadFile.do', type:'post', dataType: 'json', success:function (data){ if(data.code == "S"){ layer.close(index); layer.msg("文件上传成功,上传文件的文件名为"+data.msg, {icon: 1}); fileName = data.msg; closeAndOpenSuc(); }else{ layer.close(index); layer.msg(data.msg, {icon: 2}); } } }); } function closeAndOpenSuc() { layer.close(uploadObj.imgLayerId); $('#'+uploadObj.imgInputId).val(fileName); $('#'+uploadObj.imgShowId).attr("src",fileName); } function closeAndOpen() { layer.close(uploadObj.imgLayerId); } </script> <div class="modal-content"> <div class="modal-body"> <form id="uploadForm" class="form-horizontal" role="form" enctype="multipart/form-data"> <div class="padd"> <div class="form quick-post"> <div class="form-group"> <label class="control-label col-lg-2" style="width:100px;padding-top:5px;">选择文件</label> <div class="col-lg-6"> <input id="upload" type="file" size="30" height="20px" name="upload"> </div> </div> <div class="form-group"> <label class="control-label col-lg-2" style="width:100px;padding-top:5px;">&nbsp;</label> <div class="col-lg-6"> <input type="button" name="button" value="上传文件" class="btn btn-success" onclick="ajaxuploadsubmit()" /> </div> </div> </div> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" onclick="closeAndOpen()">关闭</button> </div> </div> ``` 报错信息 while (bis.read(byteBuffer) != -1) { os.write(byteBuffer); } 中会报错 java.io.FileNotFoundException: C:\apache-tomcat-7.0.61\work\Catalina\localhost\FishManage\upload_de2e4204_56e7_4b34_adce_163e38e29654_00000003.tmp (系统找不到指定的文件。)
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
五年程序员记流水账式的自白。
不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、.Net、QT,目前仍处于android和.net交替开发中。 毕业到现在一共就职过两家公司,目前是第二家,公司算是半个创业公司,所以基本上都会身兼多职。比如不光要写代码,还要写软著、软著评测、线上线下客户对接需求收集...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
一文详尽系列之模型评估指标
点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!!
去年,阿里云发布了本地 IDE 插件 Cloud Toolkit,仅 IntelliJ IDEA 一个平台,就有 15 万以上的开发者进行了下载,体验了一键部署带来的开发便利。时隔一年的今天,阿里云正式发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 VSCode 版本的插件,目前能做到什么? 安装插件之后,开发者可以立即体验...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
2019年除夕夜的有感而发
天气:小雨(加小雪) 温度:3摄氏度 空气:严重污染(399) 风向:北风 风力:微风 现在是除夕夜晚上十点钟,再有两个小时就要新的一年了; 首先要说的是我没患病,至少现在是没有患病;但是心情确像患了病一样沉重; 现在这个时刻应该大部分家庭都在看春晚吧,或许一家人团团圆圆的坐在一起,或许因为某些特殊原因而不能团圆;但不管是身在何处,身处什么境地,我都想对每一个人说一句:新年快乐! 不知道csdn这...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问