zoukankan      html  css  js  c++  java
  • ios 文件上传到SpringMVC

    ios代码:
    -(void)sendImg:img:(UIImage *)image{

     //请求地址
        NSMutableString *url = [[NSMutableString alloc] init];
        [url appendString:[UtilTool getHostURL]];
        [url appendString:@"savePic"];
        
        NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";
        //分界线 --AaB03x
        NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];
        //结束符 AaB03x--
        NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];
        
        NSMutableString *body = [[NSMutableString alloc] init];   


        [body appendFormat:@"%@ ",MPboundary];

      //请求参数
        [body appendFormat:@"Content-Disposition: form-data;name="%@" ",@"token"];

      //参数值
        [body appendFormat:@"%@ ", [UtilTool getToken]];
        
        NSData *imageData = UIImagePNGRepresentation([UtilTool changeImg:image max:1136]);
        
        //声明myRequestData,用来放入http body
        NSMutableData *myRequestData;
        //将body字符串转化为UTF8格式的二进制
        myRequestData=[NSMutableData data];
        

      //上传文件
        [body appendFormat:@"%@ ",MPboundary];
        [body appendFormat:@"Content-Disposition: form-data; name="uploadFile"; filename="%@" ",@"temp.png"];
        [body appendFormat:@"Content-Type: image/png "];
        [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
        
        [myRequestData appendData:imageData];
        
        //声明结束符:--AaB03x--
        NSString *end=[[NSString alloc]initWithFormat:@" %@",endMPboundary];
        //加入结束符--AaB03x--
        [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:url]];
        [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
        //    [request setTimeoutInterval:[DataStore getHttpTimeout]];
        [request setHTTPMethod:@"POST"];
        //设置HTTPHeader中Content-Type的值
        NSString *cttype=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];
        //设置HTTPHeader
        [request setValue:cttype forHTTPHeaderField:@"Content-Type"];
        //设置Content-Length
        [request setValue:[NSString stringWithFormat:@"%ld", [myRequestData length]] forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:myRequestData];
        [NSURLConnection sendSynchronousRequest:request returningResponse:nil error: nil];
    }

    后台代码:
    @RequestMapping(value = {"/savePic"}, method = RequestMethod.POST, produces= { "application/json" })
        @ResponseBody
        public String savePic(MultipartFile uploadFile, HttpServletRequest request) throws IOException, JSONException{
            JSONObject object=new JSONObject();
            if(uploadFile != null){            //上传文件
                String path = request.getSession().getServletContext().getRealPath("filePath");
                String fileName = uploadFile.getOriginalFilename();
                String fileType = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
                
                File toFile = null;
                File targetFile = new File(fileName);
                //修改文件名字,格式取当前时间
                toFile = new File(path, DateVaildator.simpleDateFormat(new Date(), "yyyyMMddHHmmss") + fileType);
                targetFile.renameTo(toFile);
                if (!toFile.exists()) {
                    toFile.mkdirs();
                }
                //保存至我们服务器
                uploadFile.transferTo(toFile);
                try {
                    String downloadUrl="filePath/"+toFile.getName();
                    object.put(Constants.RESULT_STATUS, Constants.RESULT_STATUS_ERROR);
                    object.put(Constants.RESULT_MSG, "保存失败");
                } catch (Exception e) {
                    e.printStackTrace();
                    object.put(Constants.RESULT_STATUS, Constants.RESULT_STATUS_SUCCESS);
                    object.put(Constants.RESULT_MSG, downloadUrl);
                }
                toFile.delete();
            }
            return object.toString();
        }

  • 相关阅读:
    查看linux版本的三种常用方法
    CentOS和Redhat发行版linux内核版本的对应关系
    swift的异常处理:本质是错误信息的传递方式
    构建法则第一条:有什么材料做什么饭
    待解决问题 代码阅读
    iOS: 聊聊 Designated Initializer(指定初始化函数):NS_DESIGNATED_INITIALIZER
    整合与构建的能力是创造性思维的重要体现
    iOS网络缓存的系统实现是一个烂尾工程
    (动态)代理于HOOK的区别于关系
    iOS 网络缓存总结
  • 原文地址:https://www.cnblogs.com/shareze/p/4064233.html
Copyright © 2011-2022 走看看