iOS ASIFormDataRequest上传图片 前后台代码

来源:互联网 发布:怎么测网络延迟 编辑:程序博客网 时间:2024/04/28 19:22
iOS 表单格式上传图片
NSString *urls = NSLocalizedString(@"Service_url_upload_do_json", @"");    NSURL *url = [[NSURL alloc] initWithString: urls];    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];    [request setDelegate :self];    NSString *res = @"http://f.hiphotos.baidu.com/image/pic/item/58ee3d6d55fbb2fb9ecd3a1b4d4a20a44723dcd1.jpg";    NSData *imageData = [[NSData alloc] initWithContentsOfURL:[[NSURL alloc] initWithString:res]];    [request setRequestMethod:@"POST"];        //分界线的标识符    NSString *TWITTERFON_FORM_BOUNDARY = @"AaB03x";    //分界线 --AaB03x    NSString *MPboundary=[[NSString alloc]initWithFormat:@"--%@",TWITTERFON_FORM_BOUNDARY];    //结束符 AaB03x--    NSString *endMPboundary=[[NSString alloc]initWithFormat:@"%@--",MPboundary];    //http body的字符串    NSMutableString *body=[[NSMutableString alloc]init];    //参数的集合的所有key的集合    NSString *key=@"smx";    //添加分界线,换行    [body appendFormat:@"%@\r\n",MPboundary];    //添加字段名称,换2行    [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];    //添加字段的值    [body appendFormat:@"%@\r\n",@"测试"];        ////添加分界线,换行    [body appendFormat:@"%@\r\n",MPboundary];    //声明pic字段,文件名为boris.png    [body appendFormat:@"Content-Disposition: form-data; name=\"pic\"; filename=\"test.jpg\"\r\n"];    //声明上传文件的格式    [body appendFormat:@"Content-Type: image/png\r\n\r\n"];        //声明结束符:--AaB03x--    NSString *end=[[NSString alloc]initWithFormat:@"\r\n%@",endMPboundary];    //声明myRequestData,用来放入http body    NSMutableData *myRequestData=[NSMutableData data];    //将body字符串转化为UTF8格式的二进制    [myRequestData appendData:[body dataUsingEncoding:NSUTF8StringEncoding]];    //将image的data加入    [myRequestData appendData:imageData];    //加入结束符--AaB03x--    [myRequestData appendData:[end dataUsingEncoding:NSUTF8StringEncoding]];        //设置HTTPHeader中Content-Type的值    NSString *content=[[NSString alloc]initWithFormat:@"Multipart/form-data; boundary=%@",TWITTERFON_FORM_BOUNDARY];        [request addRequestHeader:@"Content-Type" value:content];    //设置http body    [request setPostBody:myRequestData];    [request startAsynchronous];

java处理上传图片

public class FileUploadImpl implements ServletRequestAware,ServletResponseAware {private final static Logger logger = Logger.getLogger(FileUploadImpl.class);protected HttpServletRequest request;protected HttpServletResponse response;@Overridepublic void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubthis.request = arg0;}@Overridepublic void setServletResponse(HttpServletResponse arg0) {// TODO Auto-generated method stubresponse = arg0;}/** * 处理上传文件 *  * @param request * @throws UnsupportedEncodingException */public void executeUpload() {logger.info("=======executeUpload");DataOutputStream output = null;response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("UTF-8");try {output=new DataOutputStream(response.getOutputStream());boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart == true) {DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8");List fileItems = upload.parseRequest(request); // 得到所有的表单域,它们目前都被当作FileItemlogger.info("fileItems==="+fileItems.size());String uploadPath = ValueTable.getInstance(false).GetValue("MobileUploadPath");String ffmpegPath = ValueTable.getInstance(false).GetValue("ffmpegPath");File file = new File(uploadPath);if (!file.exists()) { // 如果没有此目录就创建此目录file.mkdir();}int faultid = 0;Iterator<FileItem> iter = fileItems.iterator();while (iter.hasNext()) { // 依次处理每个表单域FileItem item = (FileItem) iter.next();if (item.isFormField()) { // 如果item是正常的表单域} else { // 如果item是文件上传表单域String filename = item.getName();// 得到文件名String filetype = filename.substring(filename.lastIndexOf(".") + 1,filename.length()); // 文件后缀InputStream is = item.getInputStream(); // 此处已经得到上传文件的输入流String filepath = uploadPath + filename; // 此处的filename可以改名存储if (new File(filepath).exists()) { // 上传文件是否存在new File(filepath).delete(); // 存在就删除}if (!filepath.equals("")) { // 如果文件名不为空FileOutputStream fos = new FileOutputStream(filepath);byte[] buffer = new byte[10240];int count = 0;while ((count = is.read(buffer)) > 0) {fos.write(buffer, 0, count); // 开始上传至目录文件}fos.close();is.close();// 文件已经生成 开始执行转换线程if (如果是视频 转成flv格式) {<span style="white-space:pre"></span>String convertDestPath = uploadPath+ filename.substring(0,filename.lastIndexOf(".") + 1)+ "flv";try {ConvertVideo convertVideo = new ConvertVideo(filepath, convertDestPath,ffmpegPath);boolean b = convertVideo.process();} catch (Exception e) {e.printStackTrace();}}}}output.write("".getBytes("utf-8")); }} catch (Exception e) {// TODO: handle exceptione.printStackTrace();} try {        output.flush();        output.close(); } catch (IOException e) {e.printStackTrace();}  }}





0 0
原创粉丝点击