ios 文件上传到SpringMVC

Posted on 2014-10-31 09:15  岁月饶人  阅读(773)  评论(0编辑  收藏  举报

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:@"%@\r\n",MPboundary];

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

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

  //上传文件
    [body appendFormat:@"%@\r\n",MPboundary];
    [body appendFormat:@"Content-Disposition: form-data; name=\"uploadFile\"; filename=\"%@\"\r\n",@"temp.png"];
    [body appendFormat:@"Content-Type: image/png\r\n\r\n"];
    [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];
    
    [myRequestData appendData:imageData];
    
    //声明结束符:--AaB03x--
    NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",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();
    }

Copyright © 2024 岁月饶人
Powered by .NET 8.0 on Kubernetes