怎么获取MultipartFile的全路径

现有如下需求:从前台传递人员表给后端,后端用MultipartFile 类型接收,与人员相匹配的图片要放在人员表的同级目录,现在怎么后端怎么读取人员表路径,从而去加载对应位置的人物图片

liuno0
留念土豆 一般文件上传是post提交,可以在路径传参写上base64加密后的图片路径,后台接收方法获得加密后的路径解码获得真正的图片本地路径,
7 个月之前 回复

2个回答

感觉你这个问题的思路哪里有些不对劲。所有从浏览器上传的文件,到了后台都是由代码控制这些上传文件的存储的。
你收到前台上传的文件后,存储到后台固定的路径,此时这个 MultipartFile 接收浏览器文件的类,它的路径就没什么用途了,毕竟它是客户端的东西,存到服务器端后,跟服务器端就没关联了。
其实思路也不复杂,一般可以在应用部署的路径下固定一个目录存储浏览器上传的文件,该路径类似常量了,直接用就可以了。

文件上传的代码参考:

// 存储临时文件的目录
            String savePath = realPath + FilePathConstants.UPLOAD_FILE_PATH;
            File savePathDir = new File(savePath);
            if(!savePathDir.exists()){
                savePathDir.mkdirs();
            }
            logger.debug("图片存储的路径:" + savePath);
            File imgFile = new File(savePath + "/" + fileName);
            multipartFile.transferTo(imgFile);

后台固定路径存储上传的文件就可以了。如果是 Excel 文件,也可以解析后入数据库。核心观点就是:浏览器上传的文件要么存到服务器的资源目录上,要么直接解析后入库。

wojiushiwo945you
毕小宝 回复huorngkai: 因为我们不可能得到用户的磁盘路径信息,上传操作只是将文件名称和内容刷入表单文件对象了。
3 个月之前 回复
wojiushiwo945you
毕小宝 回复huorngkai: 应该是获取不到上传的文件的磁盘路径的,你可以看看,所有的表单 file 上传后路径都会变成一个虚假的路径,用户一上传后,需要服务端存储文件的流信息,创建新的文件,并保存到服务端。这个地址是服务端控制的,可以得到。
3 个月之前 回复
huorngkai
huorongkai 回复xlz1786734790: 我想问一下想获取文件的磁盘路径是不是也要用这种方法呢?现在是能获取到文件的对象,但是获取不到磁盘路径
3 个月之前 回复
xlz1786734790
xlz1786734790 回复毕小宝: 了解,谢谢大佬
7 个月之前 回复
wojiushiwo945you
毕小宝 回复xlz1786734790: 是的呀,必须要将用户上传的文件存储到服务器上的呀。
7 个月之前 回复
xlz1786734790
xlz1786734790 大佬的意思是将MultipartFile文件先存储到自己指定位置,然后自己再去读取么
7 个月之前 回复

有可能题主的问题是因为用户机和服务器都是同一个机器,并没有考虑到用户机和服务器是分离的。

xlz1786734790
xlz1786734790 现在就是要考虑用户机和服务器分离的
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
vue上传文件 后台获取文件名问本地磁盘路径??
1.使用ele上传组件 后台使用 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile clFile = multipartRequest.getFile("uplaodCl"); String originalName = clFile.getOriginalFilename(); 获取文件信息为文件名 项目为vue+springBoot 现象获取到的是本地的磁盘路径:C:\Users\Administrator\Desktop\测试文件.txt
MultipartFile多张图片上传,只能传一张,请问到底是这么回事啊,谢谢
public void doPost(@RequestParam("file") MultipartFile[] file,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { String[] delOs = request.getParameterValues("delOs"); if (file != null && file.length > 0) { int flag = 0;//跳出循环标识 // 循环获取file数组中得文件 for (int i = 0; i < file.length; i++) { MultipartFile pic = file[i]; // 文件名使用当前时间 String name = contractNo +"@"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); // 获取上传图片的扩展名(jpg/png/...) String extension = FilenameUtils.getExtension(originalFilename); // 图片上传的绝对路径 String url = "D:\\workspace\\File\\"; File dir = new File(url); if (!dir.exists()) { dir.mkdirs(); } if (pic.isEmpty()) { // TODO文件为空时处理 return; } else { pic.transferTo(new File(url+ name + "." + extension)); } } } } catch (Exception e) { throw new RuntimeException("服务器繁忙,上传图片失败"); } } 后台断点下没问题,file里多张图片,也可上多张,但是去掉断点,直接运行,每次就只能上传最后一张,请指教!谢谢!不好意思,没有C币!抱歉
springmvc 上传MultipartFile
# 直接看代码,如果前台页面不带有上传文件,就进不了controller, ``` @RequestMapping(value="/addApplicationFile") public void addApplicationFile( ApplicationFile applicationFile,HttpServletRequest request,HttpServletResponse response,@RequestParam(value="file", required=false) MultipartFile file){ Map<String, Object> resultMap = new HashMap<String,Object>(); boolean localUploadStatus = false; boolean ftpUploadStatus = false; OptionsItems optionsItems = null; Long userId = null; FtpFileList ftpFileList = null; try { userId = SystemUtil.getUserId(request); //设置请求编码 if( null == userId ){ SystemUtil.userInvalid(request, response); return; } if( null == applicationFile || null == applicationFile.getFileName() || applicationFile.getFileName().equals("") || null == applicationFile.getApplicationVersion() || applicationFile.getApplicationVersion().equals("") || null == applicationFile.getApplicationName() || applicationFile.getApplicationName().equals("") || null == applicationFile.getFileType() || applicationFile.getFileType().equals("") ){ resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_ERROR); resultMap.put(Constant.SHRG_MESSAGE, Constant.REQUEST_PARAM_ERROR); SystemUtil.outputJsonObject(resultMap, response); return; } int length = applicationFileService.validateApplicationName(applicationFile); if(length>0){ resultMap.put(Constant.SHRG_FLAG, Constant.RESULT_STATUS_FLAG); resultMap.put(Constant.SHRG_MESSAGE, Constant.APPLICATION_FILE_IS_EXIST); SystemUtil.outputJsonObject(resultMap, response); return; } //先上传再入库 if (null != file && !file.isEmpty()) { //文件上传路径 StringBuffer realPath = new StringBuffer();//tomcat相对路径 realPath.append(Constant.PATH_SEPARATOR_SLASH).append(Constant.PATH_APPLICATION_UPLOAD);//PATH_APPLICATION_UPLOADnew String(Constant.PATH_APPLICATION_UPLOAD.getBytes("GBK"),"iso-8859-1") //在数据得到上传的类型 optionsItems = new OptionsItems(); optionsItems.setModule(Constant.INFO_DIFF); optionsItems.setOptionCode(Constant.APP_UPLOAD_FILE_TYPE); List<OptionsItems> listO = optionsItemsService.initOptionsItem(optionsItems); optionsItems = new OptionsItems(); optionsItems.setModule(Constant.TER); optionsItems.setOptionCode(Constant.SOFTWARE_UPDATE_FILE_TYPE); List<OptionsItems> listT = optionsItemsService.initOptionsItem(optionsItems); //执行上传 if(applicationFile.getUploadType() != null && Constant.UPLOAD_TYPE_A.equals(applicationFile.getUploadType())){ String fileType = listO.get(0).getAttribute1(); fileType = fileType.replaceAll("\\.", ""); ftpFileList = FileUpload.upload(file,realPath.toString(), fileType,request); }else{ String fileType = listT.get(0).getAttribute1(); fileType = fileType.replaceAll("\\.", ""); ftpFileList = FileUpload.upload(file,realPath.toString(),fileType,request); } if(null !=ftpFileList) localUploadStatus = true; ftpUploadStatus = FtpManager.getInstance().uploadFile(ftpFileList.getPath(), ftpFileList.getFtpFilename(), ftpFileList.getFtpPath()); FileUtil.delFile(ftpFileList.getPath(),ftpFileList.getFtpFilename());//删除本地文件 applicationFile.setFileSize(ftpFileList.getFileSize()+""); applicationFile.setFileType(ftpFileList.getFileSuffix()); applicationFile.setFtpFileName(ftpFileList.getFtpFilename()); applicationFile.setFtpFilePath(ftpFileList.getFtpPath()+Constant.PATH_SEPARATOR_SLASH); applicationFile.setCreatedBy(userId); applicationFile.setLastUpdateBy(userId); //文件上传之后,再将文件 入库 applicationFileService.addApplicationFile(applicationFile); resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_SUCCESS); resultMap.put(Constant.SHRG_MESSAGE, Constant.ADD_SUCCESS); }else{ resultMap.put(Constant.SHRG_STATUS, Constant.RESULT_STATUS_ERROR); resultMap.put(Constant.SHRG_MESSAGE, Constant.UPLOAD_FILE_IS_NULL); } SystemUtil.outputJsonObject(resultMap, response); }catch(Exception ex){ ex.printStackTrace(); if(ftpUploadStatus){ String deletePath = ftpFileList.getFtpPath()+Constant.PATH_SEPARATOR_SLASH +ftpFileList.getFtpFilename(); try { FtpManager.getInstance().removeFile(deletePath); } catch (Exception e) { int resultCodeA = ShrgLog.exceptionLogMap(this, Constant.ERROR_LEVEL, Constant.INFO_DIFFUSION_PUBLISH, Constant.ADD_UPLOAD_APPLICATION_FILT, e,userId); SystemUtil.exceptionHandle(response, resultCodeA); } }else if(localUploadStatus){ FileUtil.delFile(ftpFileList.getPath(),ftpFileList.getFtpFilename());//删除本地文件 } int resultCode = ShrgLog.exceptionLogMap(this, Constant.ERROR_LEVEL, Constant.INFO_DIFFUSION_PUBLISH, Constant.ADD_UPLOAD_APPLICATION_FILT, ex,userId); SystemUtil.exceptionHandle(response, resultCode); } ```
Intellij IDEA中使用SpringMVC处理图片上传时的路径问题。
使用MultipartFile处理图片上传,使用”request.getServletContext().getRealPath“获取到 图片应该存储的路径,本来是想存到web目录下的,可是结果却存到了out/artifacts目录下, 这个目录下的图片在JSP中又无法用img标签访问到,请问如何将上传的图片存储到web 目录下,而不是artifacts目录。 ![图片说明](https://img-ask.csdn.net/upload/201803/17/1521253236_977299.png)
springMVC上传图片,可能是我选的路径不对还是啥,在客户端读取存入数据库的路径时,图片不显示。
不知道什么回事,图片就是读不出来,但是看网页源代码,有图片路径,单独访问图片路径也可以读到图片,但是在jsp中读不到,可能是过滤器或者拦截器的原因,不知道了,问问各位大神。 下面时spring MVC上传代码: ``` String path = null; //将当前上下文初始化给 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()); if(file!=null) { path=request.getServletContext().getRealPath("")+"\\image\\"+file.getOriginalFilename(); //上传 file.transferTo(new File(path)); } } } ``` 存入数据库的路径是这样:D:\Tomcat\apache-tomcat-7.0.42\webapps\students\image\QQ图片20180531181825.jpg,在jsp页面中图片路径就是这个,但是就是显示不出来,请问该怎么修改才能在将图片在jsp页面中显示出来,还有, 我这个是不是没有将图片存到服务器上啊? 求教各位了,谢谢
MultipartFile上传文件时,中文文件名乱码怎么解决?
package com.upload; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; @Controller public class UploadContronller { @RequestMapping("/toUpload.shtml") public String toUpload(){ return "upload"; } @RequestMapping(value="/upload.shtml") public String upload(@RequestParam(value="file",required=false)CommonsMultipartFile file, HttpServletRequest request,ModelMap model) throws Throwable{ // request.setCharacterEncoding("UTF-8"); if (request.getCharacterEncoding() == null) { request.setCharacterEncoding("UTF-8"); } // String type=file.getContentType(); //获取存储路径 String path=request.getSession().getServletContext().getRealPath("upload"); //上传文件名称 String fileName=file.getOriginalFilename(); System.out.println(fileName); //转义拆分重命名文件 String[] strArr=fileName.split("\\."); System.out.println(strArr[0]); System.out.println(strArr[1]); SimpleDateFormat sdf=new SimpleDateFormat("YYYYMMDDHHmmss"); String strName=sdf.format(new Date()); fileName=strName+"."+strArr[1]; System.out.println("------文件路径:"+path); //创建存储目录 File targetFile=new File(path,fileName.toString()); if(!targetFile.exists()){ targetFile.mkdirs(); } //文件上传 try { file.transferTo(targetFile); //将文件路径转发到页面 model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "result"; } }
SpringMVC跨服务器上传文件,上传至文件服务器时报404错误
这是服务器端的代码 ``` @RequestMapping("/fileupload") public String upload(MultipartFile upload) throws IOException { System.out.println("SpringMVC跨服务器方式的文件上传..."); // 定义图片服务器的请求路径 String path = "http://localhost:9090/secondly_war_exploded/uploads/"; // 获取到上传文件的名称 String filename = upload.getOriginalFilename(); // 向图片服务器上传文件 // 创建客户端对象 Client client = Client.create(); // 连接图片服务器 WebResource webResource = client.resource(path+filename); // 上传文件 webResource.put(upload.getBytes()); return "success"; } ``` 这是报错的信息: ![图片说明](https://img-ask.csdn.net/upload/201910/05/1570271504_300400.png) 报错的核心信息是上传到图片服务器的时候404错误。 起初我以为是我的路径写的有问题或者服务器没开,然后我将路径直接粘贴到地址栏上,并没有任何问题: ![图片说明](https://img-ask.csdn.net/upload/201910/05/1570271649_380764.png) 本人在网上找了许久,也不见符合的相关答案
maven项目怎么访问本地图片,或者上传的图片怎么存才方便调用
我把MultipartFile上传的图片写在本地文件夹中,但是在浏览器上不能显示,百度说是安全原因,然后说可以用tomcat的虚拟路径解决, 但是我用的是maven的tomcat插件,不知道怎么找server.xml配置文件,大神们怎么办,一定要用tomcat部署才行吗,或者图片该存在什么地方好,方便调用,我要传一个json,里面有个url要写图片的路径给调用,求大神指点
文件上传,上传本地可以,上传服务器不行,求大神帮忙看看,在线等
这是我的文件上传的代码: MultipartHttpServletRequest multipartrequest = (MultipartHttpServletRequest) request; SimpleDateFormat dateformat = new SimpleDateFormat("YYYY/MM/dd/HH"); /**构建图片保存的目录**/ String logopathdir = dateformat.format(new Date()); /**得到图片保存目录的真实路径**/ String logorealpathdir = request.getSession().getServletContext().getRealPath(logopathdir); logorealpathdir=logorealpathdir.replace("jg","image"); logger.info("文件保存地址:"+logorealpathdir); /**根据真实路径创建目录**/ File logosavefile = new File(logorealpathdir); if(!logosavefile.exists()) logosavefile.mkdirs(); /**页面控件的文件流**/ MultipartFile multipartfile = multipartrequest.getFile("file"); /**获取文件的后缀**/ String suffix = multipartfile.getOriginalFilename().substring (multipartfile.getOriginalFilename().lastIndexOf(".")); /**使用uuid生成文件名称**/ String logimagename = UUID.randomUUID().toString()+ suffix;//构建文件名称 // String logimagename = multipartfile.getOriginalFilename(); /**拼成完整的文件保存路径加文件**/ String filename = logorealpathdir+File.separator+ logimagename; File file = new File(filename); file.setWritable(true,false); try { multipartfile.transferTo(file); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 我在配置文件中也写明了 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- set the max upload size100MB --> <property name="maxUploadSize"> <value>104857600</value> </property> <property name="maxInMemorySize"> <value>4096</value> </property> </bean> 但是就是上传不了到linnux服务器,我自己本地可以上传,有没有大神能够帮忙解决的
我前端页面上传了视频到 项目的tomcat服务器上 ,数据库保存的地址,但是我在前期怎么访问这个视频啊。求大神指点
后台上传代码 ``` public int addCourseWare(HttpServletRequest request){ //解析请求中的数据 MultipartHttpServletRequest mpRequest = (MultipartHttpServletRequest) request; String courseWare_name = request.getParameter("courseWare_name"); String course_id =request.getParameter("course_name"); String courseWare_type = request.getParameter("courseWare_type"); String courseWare_introduction = request.getParameter("courseWare_introduction"); //将上传的数据写入CourseWareCnd对象 CourseWareCnd cnd = new CourseWareCnd(); cnd.setCourseWare_name(courseWare_name); cnd.setCourse_id(Integer.parseInt(course_id)); cnd.setCourseWare_type(courseWare_type); cnd.setCourseWare_introduction(courseWare_introduction); //获取上传文件的文件名 MultipartFile file = mpRequest.getFile("video"); String name = file.getOriginalFilename(); //获取项目路径 String ctxPath = request.getSession().getServletContext().getRealPath("/"); String path=ctxPath+name; cnd.setVideo(path); System.out.println("-------------"+path); File f = new File(ctxPath); if (!f.exists()) {//判断文件夹是否存在,不存在创建 f.mkdir(); } try { file.transferTo(new File(path));//将数据写到该位置 } catch (IOException e) { e.printStackTrace(); } int result = courseWareMapper.addCourseWare(cnd); return result; } ``` 前端HTML页面 ``` <div class="ibox float-e-margins"> <div class="ibox-title"> <h5>视频播放</h5> <div class="ibox-tools"> <a class="collapse-link"> <i class="fa fa-chevron-up"></i> </a> <a class="dropdown-toggle" data-toggle="dropdown" href="form_basic.html#"> <i class="fa fa-wrench"></i> </a> <a class="close-link"> <i class="fa fa-times"></i> </a> </div> </div> <div class="ibox-content"> <div class="player"> <video src=""> <!-- Video files --> Your browser does not support the video tag. <source src="http://localhost:8080" type="video/mp4"> <a href="">Download</a> </video> </div> </div> </div> ``` 我该怎么去获取这个视频啊,,,,,,, 第一次写这个视频的上传与播放 求大佬指点。。。。。。。。
前台传图片url到数据库,再次读取到前台图片不显示
@RequestMapping(value = "/uploadPic.action") @ResponseBody public Response uploadPic(@RequestParam("picture") MultipartFile picture , HttpServletRequest request) { Response response = new Response(); //获取文件在服务器的储存位置 String path = "D:/img"; File filePath = new File(path); System.out.println("文件的保存路径:" + path); if (!filePath.exists() && !filePath.isDirectory()) { System.out.println("目录不存在,创建目录:" + filePath); filePath.mkdir(); } //获取原始文件名称(包含格式) String originalFileName = picture.getOriginalFilename(); System.out.println("原始文件名称:" + originalFileName); //获取文件类型,以最后一个`.`为标识 String type = originalFileName.substring(originalFileName.lastIndexOf(".") + 1); System.out.println("文件类型:" + type); //获取文件名称(不包含格式) String name = originalFileName.substring(0, originalFileName.lastIndexOf(".")); //设置文件新名称: 当前时间+文件名称(不包含格式) Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String date = sdf.format(d); String fileName = date + name + "." + type; System.out.println("新文件名称:" + fileName); //项目url,这里可以使用常量或者去数据字典获取相应的url前缀; String fileUrl="http://localhost:8080"; //文件获取路径 fileUrl = fileUrl + request.getContextPath() + "/img/" + fileName; //在指定路径下创建一个文件 File targetFile = new File(path, fileName); //将文件保存到服务器指定位置 try { picture.transferTo(targetFile); System.out.println("上传成功"); //将文件在服务器的存储路径返回 response.setResult(fileUrl); } catch (IOException e) { e.printStackTrace(); response.setResult("上传失败"); } return response; } 后台
bootstrap fileinput 插件上传文件之后有错误提示.jpg: [object Object]
前台代码: <h3>${msg}</h3> <!-- 就是一个简单的文件表单字段 --> <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-3"> <label class="control-label" for="testfile">上传文件</label> <input type="file" id="testfile" class="" name="test" multiple /> </div> </div> </div> </body> <script type="text/javascript"> $("#testfile").fileinput({ language : 'zh', browseClass : 'btn btn-primary btn-sm', uploadUrl :"${APP_PATH}/uploadFile" }); //异步上传返回结果处理 $('#testfile').on('fileerror', function(event, data,msg) { console.log("fileerror"); }); //异步上传返回结果处理 $("#testfile").on("fileuploaded", function(event, data, previewId, index) { //var result = data.response; //上传成功处理逻辑 console.log("上传成功"); }); //上传前 $('#testfile').on('filepreupload', function(event, data) { console.log("开始上传。。。。"); }); </script> 后台: @ResponseBody @RequestMapping("/uploadFile") public String uploadFile(@RequestParam("test")MultipartFile newpic,HttpServletRequest request){ System.out.println("开始保存文件至本地"); // 原始图片名称 String oldFileName = newpic.getOriginalFilename(); // 获取上传文件的原名 // 存储路径 System.out.println("存储路径..."); String saveFilePath="F:\\sts_workSpace\\Test01\\WebContent\\images"; System.out.println(saveFilePath); // 新的图片名称 String newFileName = UUID.randomUUID() + oldFileName.substring(oldFileName.lastIndexOf(".")); // 新图片 File newFile = new File(saveFilePath,newFileName); //判断路径和文件是否存在,不存在则新建一个 if (!newFile.getParentFile().exists()) { newFile.getParentFile().mkdir(); } if (!newFile.exists()) { try { newFile.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 将内存中的数据写入磁盘 try { newpic.transferTo(newFile); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //返回文件地址 System.out.println("返回文件的访问地址:"+"images/" + newFile.getName()); return "success"; }
急,求大神帮帮,弄好多天了,ssm使用ueditor自定义上传图片时图片不能回显在编辑器上
ssm使用ueditor自定义上传图片时图片插进数据库了但是不能回显在编辑器上,编辑器提示上传错误, 这是我jsp压面添加js自定义上传路径![图片说明](https://img-ask.csdn.net/upload/201712/19/1513664045_759411.png) 但是我返回的json数据是对的,这是我的后台代码 public Map<String,Object> uploadFile(@RequestParam(value = "upfile", required = false) MultipartFile file, HttpServletRequest request,HttpServletResponse response) throws IOException{ response.setContentType("text/html;charset=UTF-8"); Map<String,Object> map = new HashMap<String, Object>(); String originalFilename = file.getOriginalFilename(); String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); // 获取上传图片的扩展名(jpg/png/...) String extension = FilenameUtils.getExtension(originalFilename); // 图片上传的相对路径(因为相对路径放到页面上就可以显示图片) String path = "/image/" + name + "." + extension; String uuidname = name+"."+extension; // 图片上传的绝对路径 String url = request.getSession().getServletContext().getRealPath("") + path; InputStream in = file.getInputStream(); File dir = new File(url); OutputStream out = new FileOutputStream(dir); byte bs[] = new byte[in.available()]; in.read(bs); out.write(bs); out.flush(); out.close(); in.close(); Image image = new Image(); image.setImageTitle(originalFilename); image.setUrl(path); boolean b = articleImageServiceDao.insertArticleImage_01(image); if(b){ map.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容 map.put("url",path); //能访问到你现在图片的路径 map.put("title",""); map.put("original",originalFilename); }else{ map.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息 map.put("url",""); map.put("title", ""); map.put("original", ""); } return map; 这是我的config.json![图片说明](https://img-ask.csdn.net/upload/201712/18/1513550249_6852.png) uc浏览器上传时提示错误和json返回数据![图片说明](https://img-ask.csdn.net/upload/201712/18/1513549471_794397.png)
spring mvc通过Model绑定值,页面通过${map.imgurl}怎么获取不了值,求解答
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST) //@ResponseBody public String upLoadRequest(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request,Model model)throws Exception { Map<String, Object> map = new HashMap<String, Object>(); String fileName = request.getParameter("name")+""; logger.info("文件名称:"+fileName); SimpleDateFormat usdf=new SimpleDateFormat("yyyyMMddHHmmss"); //服务器上的文件以上传时间命名,方便修改名称。 String uptime=usdf.format(new Date()); String name[]=fileName.split("\\."); String newfileName=uptime+"."+name[1]; map.put("fileName", newfileName); try{ File uploadPathFile = new File(uploadPath); if(!uploadPathFile.exists()){ uploadPathFile.mkdirs(); } logger.info("文件保存路径为:"+uploadPath); FileUtils.copyInputStreamToFile(file.getInputStream(), new File(uploadPathFile+File.separator+newfileName)); map.put("success", true); /** * 向数据库保存上传文件信息 *//* SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String mediaTime=sdf.format(new Date()); Map<String, String> params = new HashMap<String, String>(); params.put("mediaTitle", fileName); params.put("mediaSrc", newfileName); params.put("mediaDec", request.getParameter("mediaDec")+""); params.put("mediaTime", mediaTime); String userId=""; try { // 防中文乱码 userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8") + ""; } catch (UnsupportedEncodingException e) { e.printStackTrace(); }; params.put("userId", userId);*/ //HashMap<String, String> resultmap = pmosdao.saveFileMessage(params); }catch(Exception e){ map.put("success", false); e.printStackTrace(); } String imgUrl = uploadPath+File.separator+newfileName; logger.info(imgUrl); map.put("imgurl", imgUrl); model.addAttribute("map", map); return "test/testfileup"; }
求助:summernote+spring mvc图片上传报错
先是controller代码: ``` @ResponseBody @RequestMapping("/sumimg.do") public Result upload(HttpServletRequest request) { Result result = new Result(); // 转换为文件类型的request MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 获取对应file对象 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); Iterator<String> fileIterator = multipartRequest.getFileNames(); // 获取项目的相对路径(http://localhost:8080/file) String path = request.getSession().getServletContext().getRealPath("up-img"); while (fileIterator.hasNext()) { String fileKey = fileIterator.next(); // 获取对应文件 MultipartFile multipartFile = fileMap.get(fileKey); if (multipartFile.getSize() != 0L) { String imgName = Util.createId() + multipartFile.getOriginalFilename(); try { multipartFile.transferTo(new File(path,imgName)); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } result.setData(path+"File.separator"+imgName); result.setMsg("上传成功!"); result.setStatus(0); System.out.println(path+"\\"+imgName); } else { result.setMsg("上传失败!"); result.setStatus(1); } } return result; } ``` 然后是spring mvc的配置: ``` <!-- 使用CommonsMultipartResolver配置一个MultipartResolver解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--文件最大值 --> <property name="maxUploadSize" value="1048576000" /> <property name="defaultEncoding" value="utf-8"/> <!--缓存大小 --> <property name="maxInMemorySize" value="40960"/> </bean> ``` 然后是前端的代码: ``` <script type="text/javascript"> $(function(){ $(".summernote").summernote({ lang:"zh-CN",height:"700px", callbacks: { onImageUpload: function(files) { sendFile(files[0]); } } }); function sendFile(file) { var data = new FormData(); data = new FormData(); data.append("file", file); $.ajax({ data: data, type: "POST", url: path+"/upload/sumimg.do", cache: false, contentType: false, processData: false, success: function(result) { alert(1); alert(result.data); }, error: function() { $(".note-alarm").html("上传失败"); setTimeout(function() { $(".note-alarm").remove(); },3000); } }); } }); </script> </head> <body> <div class="container summernote" id="summernote"></div> </body> ``` 最后是所报的错误: ``` 严重: Servlet.service() for servlet springmvc threw exception java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest at cn.xaut.bz.controller.ImageController.upload(ImageController.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:745) ``` 注:图片可以正常的保存到img-upload中,路径也可以正常打印
ckeditor5 图片上传问题,求大神讲解下,谢谢
这是我的初始化编辑器 ``` DecoupledEditor .create( document.querySelector( '#webDetails' ),{ language: 'zh-cn', image: { toolbar: [ 'imageTextAlternative' ], styles: [ 'full', 'side' ] }, ckfinder: { uploadUrl: '<%=WEBPATH%>/loadImage'// 这个就是我上次的图片路径,我也不知道是不是这样配,但是我就是这样搞得,在后台可以接受到。 } } ) .then( editor => { const toolbarContainer = document.querySelector( '#toolbar-webDetails' ); toolbarContainer.appendChild( editor.ui.view.toolbar.element ); } ) ``` ``` @PostMapping("loadImage") @ResponseBody public String updateMaterial(@RequestParam("upload") MultipartFile file, HttpServletRequest request){ String trueFileName = null; String realPath = null; try { realPath = request.getSession().getServletContext().getRealPath("/upload"); System.out.println(realPath); trueFileName = uploadImg(realPath, file); } catch (IllegalStateException | IOException e) { e.printStackTrace(); } return "{\"default\":\"" + realPath + File.separator + trueFileName + "\"}"; } ``` 对我这边可以接受到,按道理 他上传后应该是返回的就是 ,上传结束后的图片地址,但是,应该有个格式吧,我看了官方的api 看不明白,菜鸟,找不到重点,随后我就在官方示例上 用了图片上传,看了返回的格式,首先是{"这是数字随机的":"";"default":"图片地址"}所以我返回的是 就上面的格式 default:图片地址了,这样但是失败了,不知道应该怎么办,求大神指教指教 ![这就是当时上传的情况,后台也没报错,请忽略地址不一致的情况](https://img-ask.csdn.net/upload/201805/06/1525583694_476523.png)
springmvc中DAO中save方法与数据库
save方法: public void save(T o){ getSession().save(o); } controller里的方法: @RequestMapping(value = "/fileUpload2.do", method = RequestMethod.POST) public String fileUpload2(Long id,Video video,ModelMap map,HttpServletRequest request) throws IllegalStateException, IOException { System.out.println("id是"+id); // 设置上下方文 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); System.out.println("2"); // 检查form是否有enctype="multipart/form-data" if (multipartResolver.isMultipart(request)) { MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; System.out.println("3"); Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 由CommonsMultipartFile继承而来,拥有上面的方法. MultipartFile file = multiRequest.getFile(iter.next()); if (file != null) { String videoname = "Upload" + file.getOriginalFilename(); video.setvideoname(videoname); String path = "E:/" + videoname; video.setPath(path); File localFile = new File(path); file.transferTo(localFile); System.out.println("4"); } } } Long Tid=id; map.addAttribute("id", id); map.addAttribute("Tid", Tid); video.setTid(Tid); System.out.println("视频路径是1"+video.getPath()); System.out.println("视频Tid是1"+video.getTid()); videoService.save(video); System.out.println("视频路径是2"+video.getPath()); System.out.println("视频Tid是2"+video.getTid()); return "main/homework"; } 控制台打印信息是正确的,但是数据库中没有插入相应信息。有木有大神指点?挺急的,在线等。
Ajax提交地址为同一个方法。
是这样的,我的页面一个form表单存在两个部分,if判断是显示修改标签还是添加标签。 提交的时候就会提交到同一个方法里。其实之前是修改区域有个input value存的是修改url路径,添加区域也有个input value存的是添加的url路径。 后来我想都提交到同一个url即同一个后台方法里。判断id是否存在来判断是要修改还是添加。 ``` @ResponseBody() @RequestMapping("/edit_do") public JsonResult edit_do(Foods foods,@RequestParam("foodsImg")MultipartFile file){ JsonResult jr = new JsonResult(); try{ String path =""; if(foods.getFoods_id()!=null){ //执行更新 //如果file为空,则表示不换图片不需要重新上传 if(file!=null){ if(!FileUtil.isAllowUpImg(file.getOriginalFilename())){ return JsonResultUtil.getErrorJson("不允许上传的文件格式,请上传gif,jpg,bmp格式文件。"); } //上传图片, path = upload(file,200,200); System.out.println(path); foods.setFoods_img(path); } //执行修改 foodsManager.updateFoods(foods); }else{ //执行添加 //创建一个ID添加 Random r = new Random(1000); String foods_id ="foods"+r.nextInt()+r.nextInt(); System.out.println(foods_id); foods.setFoods_id(foods_id); if(!FileUtil.isAllowUpImg(file.getOriginalFilename())){ return JsonResultUtil.getErrorJson("不允许上传的文件格式,请上传gif,jpg,bmp格式文件。"); } //上传图片, path = upload(file,200,200); String updateTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());//更新时间 foods.setFoods_img(path); foods.setCreate_time(updateTime); System.out.println(foods.getCreate_time()); foodsManager.insertFoods(foods); } } catch(RuntimeException e) { Logger logger = Logger.getLogger(getClass()); logger.error("上传图片出错:"+e); } catch (Exception e) { return JsonResultUtil.getErrorJson("失败"+e.getMessage()); } jr.setResult(1); jr.setMessage("成功"); return jr; } ``` 执行添加的时候,一切ok。后来修改就总是提示不成功。也不报错,我打断点,连方法都不进。问问原因,是不是不能写一个方法里。就必须要分开写。
使用bootstrap-fileinput时,后台无法接收到内容
最近在使用bootstrap-fileinput上传文件,但是后台接收不到MultipleHttpServletRequest。 下面是HTML代码: ``` <form role="form" enctype="multipart/form-data"> <div class="form-group"> <label for="UploadFile" >上传文件路径</label> <input type="file" multiple="multiple" class="file-loading" id="UploadFile" name="UplodaFile"> </div> </form> ``` 下面是后台代码 ``` @ResponseBody @RequestMapping(value="/upload",method = RequestMethod.POST) public Response insert(MultipartHttpServletRequest request, @RequestParam(required = false) MultipartFile[] files, String filetype, String purpose, String description) throws Exception { System.out.println("upload"); Response response2 = new Response().failure("add job error"); return response2; } ``` 点击上传之后显示错误信息如下: ``` org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@4649f8c5 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) javax.servlet.http.HttpServlet.service(HttpServlet.java:650) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) ``` 如果去掉MultipartFile并把MultipartHttpServletRequest改为HttpServletRequest则能够正常接收参数。
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问