精华内容
下载资源
问答
  • php 上传图片后端代码

    2020-03-20 13:43:24
    //上传图片 public function uploadp() { // dump($_FILES);die; extract($_POST); $file_name = $_FILES['file']['name']; $type = array("jpg", "gif", 'png', 'bmp'); ...
     //上传图片
        public function uploadp()
        {
        	// dump($_FILES);die;
             extract($_POST);
        	 $file_name = $_FILES['file']['name'];
        	
        	 $type = array("jpg", "gif", 'png', 'bmp');
        	  $ext = explode(".", $file_name);
              $ext = $ext[count($ext) - 1];//取图片的后缀名
        	   if (in_array($ext,$type)){
        	   	 do{
    		        $new_name = $this->get_file_name(6).'.'.$ext;//新的图片名称
    		        
    		        $path='uploads/imgs/'.$new_name;//uploads为目标文件夹
    		       
    		    }while (file_exists("../" . $path));//检查图片是否存在文件夹,存在返回ture,否则false
    	
    			    $temp_file=$_FILES['file']['tmp_name']; 
    			     //执行数据库存储
    			     $result = [
    			     		'update_time'=>date('Y-m-d H:i:s'),
    			     		'picture_urls'=>$path,
    			     	];
    			 
        	      $data = M('imgs')->add($result);
    			  if($data > 0 ){
    	        		 move_uploaded_file($temp_file,$path);//移动临时文件到目标路径
    	        		 $arr = [
    	        		 	'pid'=>$data
    	        		 	];
    	        		  $this->ajaxReturn($arr,'JSON');
    		        }else{
    		            $this->error('上传失败,请重试!');
    		        }
        	   }else{
        	   		$this->error('上传失败!格式不正确!');
        	   }
        }
    
    展开全文
  • 文件上传下载后端代码 Upload 工具类: @Component @ConfigurationProperties("upload") public class Upload { private Logger log = LoggerFactory.getLogger(Upload.class); // 获取存放位置 private Map<...

    文件上传下载后端代码

    1. Upload 工具类:
    
    @Component
    @ConfigurationProperties("upload")
    public class Upload {
    	private Logger log = LoggerFactory.getLogger(Upload.class);
    	// 获取存放位置
    	private Map<String, String> location;
    
    	// 单个文件大小
    	private String maxFileSize;
    
    	// 上次总文件大小
    	private String maxRequestSize;
    
    	// token验证密钥
    	private String secret;
    
    	public Map<String, String> getLocation() {
    		return location;
    	}
    
    	public void setLocation(Map<String, String> location) {
    		this.location = location;
    	}
    
    	public String getMaxFileSize() {
    		return maxFileSize;
    	}
    
    	public void setMaxFileSize(String maxFileSize) {
    		this.maxFileSize = maxFileSize;
    	}
    
    	public String getMaxRequestSize() {
    		return maxRequestSize;
    	}
    
    	public void setMaxRequestSize(String maxRequestSize) {
    		this.maxRequestSize = maxRequestSize;
    	}
    
    	public String getSecret() {
    		return secret;
    	}
    
    	public void setSecret(String secret) {
    		this.secret = secret;
    	}
    
    	public String getBasePath() {
    		String location = "";
    		//system.getProperty获取系统属性名称
    		String os = System.getProperty("os.name");
    		//系统属性名称是否是以win为前缀
    		if(os.toLowerCase().startsWith("win")) {
    			location = this.getLocation().get("windows");
    		} else {
    			location = this.getLocation().get("linux");
    		}
    		return location;
    	}
    
    	/**
    	 * @Description: TODO(初始化文件上传)
    	 * @param
    	 * @throws
    	 */
    	@Bean
    	public MultipartConfigElement multipartConfigElement() {
    
    		MultipartConfigFactory factory = new MultipartConfigFactory();
    		// 设置文件大小限制 ,超出设置页面会抛出异常信息,
    		// 这样在文件上传的地方就需要进行异常信息的处理了;
    		factory.setMaxFileSize(this.getMaxFileSize()); // KB,MB
    		/// 设置总上传数据总大小
    		factory.setMaxRequestSize(this.getMaxRequestSize());
    		// Sets the directory location where files will be stored.
    		// factory.setLocation(this.getBasePath());
    		log.info("初始化上传参数成功。");
    		return factory.createMultipartConfig();
    	}
    }
    
    1. 文件上传工具类
    
    public class FilesUpload {
    
        private static final Logger log = LoggerFactory.getLogger(FilesUpload.class);
        private static FilesUpload filesUpload = null;
    
        private FilesUpload() {
    
        }
    
        public static FilesUpload getIntance() {
            if (filesUpload == null) {
                filesUpload = new FilesUpload();
            }
            return filesUpload;
        }
    
        /**
         * @Description: TODO(存储)
         * @param file
         * @param path
         * @throws Exception
         */
    
        public boolean saveFile(MultipartFile file, String path) {
            // 判断文件是否为空
            if (!file.isEmpty()) {
                try {
                    File saveDir = new File(path);
                    if (!saveDir.getParentFile().exists())
                        saveDir.getParentFile().mkdirs();
    
                    // 转存文件
                    file.transferTo(saveDir);
                    return true;
                    // return list;
                } catch (Exception e) {
                    e.printStackTrace();
                    log.error("存储pdf异常,数据详情 --> | " + JSON.toJSONString(file) + " | 异常信息 --> |"+e.getMessage());
    
                }
            }
            return false;
        }
    }
    
    1. 文件下载工具类
    
    public class DownloadUtil {
    
    
        /**
         * 获取源文件物理路径
         * @param realPath
         * @return
         */
        public static  String getPath(String realPath){
            if(realPath!=null&&realPath.length()>0){
                String[] pa = realPath.split("/");
                String path = "";
                //获取文件保存的物理路径
                for (int i = 0; i < pa.length - 1; i++) {
                    if (i >= 0 && i == pa.length - 2) {
                        path = path + pa[i];
                    } else {
                        path = path + pa[i] + "/";
                    }
    
                }
    
                return path;
            }else{
                return null;
            }
        }
    
    
    
    
    
    
        public static void downFile(HttpServletResponse response,File file,String vcName){
    
            boolean bo=file.exists();
    
            if (bo) {
                try {
                    //把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码,中文不要太多,最多支持17个中文,因为header有150个字节限制。
                    vcName = new String(vcName.getBytes("UTF-8"), "ISO8859-1");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                response.setContentType("application/force-download");// 设置强制下载不打开
                //response.setContentType("application/octet-stream");// 告诉浏览器输出内容为流
                //Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,
                // 文件以filename的值命名,保存类型以Content中设置的为准。注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段。
                response.addHeader("Content-Disposition", "attachment;fileName=" + vcName);// 设置文件名
                String len = String.valueOf(file.length());
                response.setHeader("Content-Length", len);//设置内容长度
                byte[] buffer = new byte[1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = response.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                    // System.out.println("success");
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
    
    1. controller层
    
    @Controller
    @RequestMapping("/upkeep")
    public class UpkeepController{
    
    	@Resource
        Upload upload;
    	
        @PostMapping(value = "/addSl", name = "上传文件")
        @ResponseBody
        public ResultMsg addSl(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
            SavePdf sp = new SavePdf();
            //获取文件名称
            String fileName = file.getOriginalFilename();
            UpkeepSpecial entity = new UpkeepSpecial();
            String uuid = UUIDUtil.uuid();
            //设置主键ID
            entity.setVcId(UUIDUtil.uuid());
            //对象设置标题
            entity.setVcName(fileName);
            //设置唯一文件名称vcInPath
            String name = sp.getPdfName(uuid, fileName);
            entity.setVcInPath(name);
            //设置唯一文件保存物理路径
            String path = upload.getBasePath() + name;
            entity.setVcOutPath(path);//附件保存的物理路径
            FilesUpload.getIntance().saveFile(file, path);
            ResultMsg resultMsg = upkeepService.addSl(entity);
            return resultMsg;
        }
    
    	@RequestMapping(value = "/downloadSl", name = "下载")
        public void downloadFileSl(HttpServletRequest request, HttpServletResponse response, String vcId) {
            //获取entity对象
            UpkeepSpecial entity = upkeepService.infoSl(vcId);
            String fileName = entity.getVcInPath();//设置文件名,根据业务需要替换成要下载的文件名
            String vcName = entity.getVcName();
            //通过物理路径上传文件
            String realPath = entity.getVcOutPath();
            File file = new File(realPath);
            DownloadUtil.downFile(response, file, vcName);
        }
    }
    
    展开全文
  • 文章目录微信小程序 - 前端后端代码遇到的BUG 微信小程序 - 前端 其中主要用到的两个API,wx.chooseImage(选择图片)和wx.uploadFile(将本地资源上传到服务器) 地址:微信小程序开发文档 wx.chooseImage 从...

    微信小程序 - 前端

    其中主要用到的两个API,wx.chooseImage(选择图片)和wx.uploadFile(将本地资源上传到服务器)

    地址:微信小程序开发文档

    1. wx.chooseImage

      从本地相册选择图片或使用相机拍照。

      代码示例:

      wx.chooseImage({
        count: 1, // 最多可以选择的图片张数
        sizeType: ['original', 'compressed'], // 所选图片的尺寸
        sourceType: ['album', 'camera'], // 选择图片的来源(从相机选图/使用相机)
        success (res) {
          // tempFilePath可以作为img标签的src属性显示图片
          const tempFilePaths = res.tempFilePaths
        }
      })
      
    2. wx.chooseImage

      将本地资源上传到服务器。客户端发起一个HTTPS POST请求,其中content-typemultipart/form-data

      代码示例:

      wx.chooseImage({
       success (res) {
         const tempFilePaths = res.tempFilePaths
         wx.uploadFile({
           url: 'https://example.weixin.qq.com/upload', //开发者服务器地址
           filePath: tempFilePaths[0], // 要上传的资源的路径
           name: 'file', // 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
           formData: {
             'user': 'test'
           }, // HTTP 请求中其他额外的 form data
           success (res){
             const data = res.data // 开发者服务器返回的数据
           }
         })
       }
      })```
      
      

     

    后端代码

    项目采用SpringCloud,会经过一个前置模块进行远程调用,用到Feign(这个需要特别注意!)

    • 前置模块(调用模块)

      @PostMapping("file/uploadFile")
      @ApiOperation(value = "上传文件", notes = "上传文件")
      public ApiResponse uploadFiles(HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file){
          return feignBusinessService.uploadFiles(request,file);
      }
      
    • FeignService

      openfeign默认不支持文件参数,但提供了feign-form扩展工具。
      引入 io.github.openfeign.form:feign-form:3.8.0io.github.openfeign.form:feign-form-spring:3.8.0 maven依赖,注入 SpringFormEncoder ,在 @FeignClient 中配下configuration即可。
       

      Maven依赖

          <dependency>
              <groupId>io.github.openfeign.form</groupId>
              <artifactId>feign-form</artifactId>
              <version>3.8.0</version>
          </dependency>
          <dependency>
              <groupId>io.github.openfeign.form</groupId>
              <artifactId>feign-form-spring</artifactId>
              <version>3.8.0</version>
          </dependency>
          <dependency>
              <groupId>io.github.openfeign</groupId>
              <artifactId>feign-core</artifactId>
              <version>10.7.4</version>
              <scope>compile</scope>
          </dependency>
      

      配置类

      public class FeignMultipartSupportConfig {
      
       @Autowired
       private ObjectFactory<HttpMessageConverters> messageConverters;
      
       @Bean
       public Encoder feignFormEncoder() {
           return new SpringFormEncoder(new SpringEncoder(messageConverters));
       }
      }
      

      接口编写

      • @FeignClient使用配置类
      • @PostMapping设置 consumes = MediaType.MULTIPART_FORM_DATA_VALUE
      • 使用@RequestPart(),不能使用@RequestParam()
      @Component
      @FeignClient(name = "businessApi",configuration= FeignMultipartSupportConfig.class)
      public interface FeignBusinessService {
       /**
        * 上传文件
        * 也可以使用MultipartFile[]上传多个文件
        * @param request
        * @param file
        * @return
        */
       @PostMapping(value = "app/file/uploadFile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
       ApiResponse uploadFiles(@RequestParam("request") HttpServletRequest request, @RequestPart("file") MultipartFile file);
      }
      
    • 业务模块(被调用模块)

       /**
        * 上传文件
        *
        * @param request
        * @param file
        * @return
        * @throws IOException
        */
       @PostMapping("file/uploadFile")
       @ApiOperation(value = "上传文件", notes = "上传文件")
       public ApiResponse uploadFiles(HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
      
           request.setCharacterEncoding("UTF-8");
           log.info("执行图片上传");
           if (!file.isEmpty()) {
               log.info("成功获取照片");
               String fileName = file.getOriginalFilename();
               String path;
               String type;
               type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1) : null;
               log.info("图片初始名称为:" + fileName + " 类型为:" + 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 = System.currentTimeMillis() + fileName;
      //                    // 设置存放图片文件的路径
      //                    path = realPath + "/uploads/" + trueFileName;
      //                    log.info("存放图片文件的路径:" + path);
      //                    File path1 = new File(path);
      //                    if (!path1.exists()) {
      //                        path1.mkdirs();
      //                    }
      //                    file.transferTo(path1);
      //                    log.info("文件成功上传到指定目录下");
      
                       // 上传到服务器
                       String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
                       String trueFileName = StringUtils.getSimpleNum() + suffix;
                       boolean flag = ftpUtil.uploadByBytes(remoteWay, file.getBytes(), trueFileName);
                       if (!flag) {
                           return ApiResponse.getApiResponse("添加失败");
                       }
                       return ApiResponse.getApiResponse(ftpUtil.getLookPath(remoteWay + "/" + trueFileName)); // 返回服务器返回的图片地址
                   } else {
                       log.info("不是我们想要的文件类型,请按要求重新上传");
                       return ApiResponse.getFailApiResponse();
                   }
               } else {
                   log.info("文件类型为空");
                   return ApiResponse.getFailApiResponse();
               }
           } else {
               log.info("没有找到相对应的文件");
               return ApiResponse.getFailApiResponse();
           }
       }
      

      FTP工具类

      @Slf4j
      @Component
      public class FileFtpUtil {
      /**
        * ftp上传单个文件
        *
        * @param path          上传至ftp的路径名不包括文件名
        * @param localFilePath 要上传的本地文件全路径名
        * @throws IOException
        */
       public boolean upload(String path, String localFilePath) {
      
           boolean result = false;
      
           //初始化ftp链接
           this.initFtpClient();
           //构建文件输入流
           FileInputStream fis = null;
      
           try {
               //处理上传目录不存在。上传前先构建一次目录,避免文件目录不存在报错
               ftp.makeDirectory(remote + path);
               // 切换上传目录
               if (this.changeWorkingDirectory(path)) {
                   File srcFile = new File(localFilePath);
                   if (srcFile.exists() && srcFile.isFile()) {
                       fis = new FileInputStream(srcFile);
                       result = ftp.storeFile(srcFile.getName(), fis);
                       if (result) {
                           log.info("FTP=============文件上传 目录:{}  文件名:{}  成功", path, srcFile.getName());
                       } else {
                           log.info("FTP=============文件上传 目录:{}  文件名:{}  失败", path, srcFile.getName());
                       }
                   }
               }
           } catch (FileNotFoundException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           } finally {
               try {
                   if (null != fis) {
                       fis.close();
                   }
                   //关闭ftp
                   this.close();
               } catch (IOException e) {
                   throw new RuntimeException("关闭FTP连接发生异常!", e);
               }
           }
           return result;
       }
       }
      

      配置文件

      ftp:
        ip: xxx // 服务器IP
        port: xxx
        user: xxx
        pwd: xxx
        #  文件服务器路径前缀
        remote: xxx
        #  文件服务器路径
        route-way: xxx
        #  文件服务器文件查看地址
        look-path: xxx
      

     

    遇到的BUG

    • [Current request is not a multipart request] with root cause
      解决方案:检查Content-Type,设置为multipart/form-data。也有可能不是前端的问题,后台没有接收到参数。

    • nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode

    • 添加对文件的配置后报错: feign.codec.EncodeException: class java.util.LinkedHashMap is not a type supported by this encoder.

      当时配置类如下:

      @Configuration
      public class FeignMultipartConfig {
      
       @Bean
       @Primary
       @Scope("prototype")
       public SpringFormEncoder multipartFormEncoder() {
           return new SpringFormEncoder();
       }
      
       @Bean
       public feign.Logger.Level multipartLoggerLevel() {
           return feign.Logger.Level.FULL;
       }
      }
      

      解决方案:将配置类改为

      public class FeignMultipartSupportConfig {
      
       @Autowired
       private ObjectFactory<HttpMessageConverters> messageConverters;
      
       @Bean
       public Encoder feignFormEncoder() {
           return new SpringFormEncoder(new SpringEncoder(messageConverters));
       }
      }
      

     
    参考:

    1.Feign上传文件的常见问题
    2.微信小程序上传图片到服务器(java后台以及使用springmvc)

    展开全文
  • 个人头像手动上传(基于Springboot的后端代码展示) 场景一:一般来说,对于微信小程序,很多时候登录的场景都是,“是否同意上传微信头像”;“获取您的用户信息”。然后我们通常都是同意的嘛。然后就会你的头像就...

    个人头像手动上传(基于Springboot的后端代码展示)

    场景一:一般来说,对于微信小程序,很多时候登录的场景都是,“是否同意上传微信头像”;“获取您的用户信息”。然后我们通常都是同意的嘛。然后就会你的头像就会出现在页面固定的位置。可以说是很方便,因为微信开发平台是开放相应的API给我们的,我们可以通过第三方(微信)实现用户在自己后台登录。

    场景二:但同时也存在很多个人头像手动上传的场景,比如快手平台,这样用户就可以根据自己的喜好上传和更换自己喜欢的图片,也可以不上传图片,更加地人性化。

    package com.imooc.controller;
    
    import com.imooc.pojo.Users;
    import com.imooc.service.UserService;
    import com.imooc.utils.IMoocJSONResult;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import org.apache.commons.io.IOUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    
    @RestController
    @Api(value="用户相关业务的接口", tags= {"用户相关业务的controller"})
    @RequestMapping("/user")
    public class UserController extends BasicController {
    
        @Autowired
        private UserService userService;
    
        @ApiOperation(value = "用户上传头像", notes = "用户上传头像的接口")
        @ApiImplicitParam(name = "userId", value = "用户id", required = true,
                dataType = "String", paramType = "query")
        @PostMapping("/uploadFace")
        //登录后通过userId上传头像
        public IMoocJSONResult uploadFace(String userId,
                                          @RequestParam("file") MultipartFile[] files) throws Exception {
    
            if (StringUtils.isBlank(userId)) {
                return IMoocJSONResult.errorMsg("用户id不能为空...");
            }
    
            // 文件保存的命名空间
            String fileSpace = "C:/videos_dev";
            // 保存到数据库中的相对路径
            String uploadPathDB = "/" + userId + "/face";
    
            FileOutputStream fileOutputStream = null;
            InputStream inputStream = null;
            try {
                if (files != null && files.length > 0) { //有头像上传
    
                    /**
                     * 上传头像默认是一个文件(下面直接取第[0]个),如果是多个就使用for循环以下的整个步骤
                     */
                    String fileName = files[0].getOriginalFilename(); //获取文件的原名称
                    if (StringUtils.isNotBlank(fileName)) {
                        // 文件上传的最终保存路径
                        //例:C:/imooc_videos_dev/10010/face/*.png
                        String finalFacePath = fileSpace + uploadPathDB + "/" + fileName;
                        // 设置数据库保存的路径
                        //例:/10010/face/*.png
                        uploadPathDB += ("/" + fileName);
    
                        //打开文件
                        File outFile = new File(finalFacePath);
                        //getParentFile()获取抽象路径的父目录的抽象路径名
                        if (outFile.getParentFile() != null || !outFile.getParentFile().isDirectory()) {
                            // 创建父文件夹
                            outFile.getParentFile().mkdirs(); //outFile.mkdirs() 就是*.png也变成了目录
                        }
    
                        fileOutputStream = new FileOutputStream(outFile);
                        inputStream = files[0].getInputStream(); //获取文件流
                        IOUtils.copy(inputStream, fileOutputStream);
                    }
    
                } else {
                    return IMoocJSONResult.errorMsg("上传出错...");
                }
            } catch (Exception e) {
                e.printStackTrace();
                return IMoocJSONResult.errorMsg("上传出错...");
            } finally {
                if (fileOutputStream != null) {
                    fileOutputStream.flush();
                    fileOutputStream.close();
                }
            }
            //下面四行代码的作用更新userId和图片的相对路径
            Users user = new Users();
            user.setId(userId);
            user.setFaceImage(uploadPathDB);
            userService.updateUserInfo(user);
            
            //返回相对路径,前端通过相对路径+静态资源映射即可获得图片,最后显示出来
            return IMoocJSONResult.ok(uploadPathDB);
        }
    
    展开全文
  • uniapp上传图片使用组件Upload+java后端代码 #效果展示 ##数据库展示 ##本地展示 网页展示 代码展示 前端 uniapp <!-- 单张图片 --> <!-- <u-upload v-model="form.attachment" ref="uUpload" :file-...
  • 选择文件之后自动上传 //普通图片上传 var uploadInst = upload.render({ elem: '#test1' , url: 'file/upload.action' , accept: 'images' , acceptMime: 'image/*'...
  • 最近在做uniapp相关的开发,在上传图片的时候遇到了一些问题,所幸经过一些努力,解决开发过程中遇到的困难,记录一下uniapp上传图片的实现过程 1、前端代码 setPic1: function() { var me = this; var ...
  • 要导入到每张照片的params 是这样的: {"name"=>"1 (1).jpg",  "size"=>"164623",  "lastModifiedDate"=>"Sat Oct 24 2014 12:20:34",  "id"=>"WU_FILE_0",  "type"=>"image/jpeg",  "my_id"=>"1293...
  • 前端代码,ajax <!... <...ajax上传图片练习</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <style type="text/css"> </styl
  • layui + SSM 实现文件上传,前端+后端代码 html代码: <div class="layui-upload"> <button type="button" class="layui-btn" id="test1">上传图片</button> <div class="layui-upload-list...
  • 文件、图片上传(一)—–前端与后端代码用的编译器是idea,前端代码在jsp页面中,后端则是写在SSM框架中控制层Controller。前端代码(jsp页面) ${website}file/file/${id}" method="post" enctype="multipart/...
  • 之前帮别人开发的,只是花了一天的时间,做好了前端+后端,还有后台哦!!! 很简单的一个小程序,就是表单+图片上传。下面是小程序的界面。   (此图片来源于网络,如有侵权,请联系删除! ) 代码结构   (此图片...
  • 此次变动较大,移除了后端相关代码,纯 ajax 提交,请配置 neditor.config.js ,默认配置支持又拍云,可自行修改支持其他...移除了所有后端代码,重写了上传逻辑 图片/视频/涂鸦板 支持 ajax 提交 发布了 npm 包 @...
  • ios设备拍照上传会出现角度不正确的问题,对于这种问题我们可以在PHP后端获取图片的旋转角度然后进行修正即可特别注意:图片必须是拍照上传的原始图片,切勿在前端通过js进行压缩等“重新生成新图片”操作,否则新...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,706
精华内容 14,282
关键字:

上传图片后端代码