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
- iOS ASIFormDataRequest上传图片 前后台代码
- IOS 上传图片 ASIFormDataRequest
- 上传图片 支持剪切图片 前后台代码
- iOS用ASIFormDataRequest实现图片上传
- ios ASIFormDataRequest上传图片到php服务器
- iOS用ASIFormDataRequest实现图片上传
- ios ASIFormDataRequest上传图片到php服务器
- iOS用ASIFormDataRequest实现图片上传
- summernote 图片上传方法重写。附前后台所有代码。
- ASIFormDataRequest 上传图片
- IOS成长之路-ASIFormDataRequest实现上传图片
- IOS成长之路-ASIFormDataRequest实现上传图片
- IOS成长之路-ASIFormDataRequest实现上传图片
- IOS成长之路-ASIFormDataRequest实现上传图片
- IOS成长之路-ASIFormDataRequest实现上传图片
- Jquery多文件上传前后台代码
- javaweb上传文件前后台代码示例
- formdata ajax上传文件前后台代码
- jQuery选择器代码详解(二)——select方法
- EditText添加表情
- Hive异常:UDFArgumentTypeException No argument is expected
- 产品经理思维运营社区
- Hibernate3.x openSession()与getCurrentSession()得到的连接的区别
- iOS ASIFormDataRequest上传图片 前后台代码
- php+jquery+ajax+json简单小例子
- GitHub 优秀的 Android 开源项目
- Web_PHP_DedeCMS_如何使list标签支持noflag属性?
- 全局可用的模板变量
- 抛砖引玉:微信速增好友十法
- IOS开发——获取局域网IP
- Win7下使用VS2013编写的ActvieX在XP下注册提示:LoadLibrary("XXX.dll")失败-找不到指定的程序
- CKEditor+CKFinder+jsp的整理