lastPathComponent的功能

转载自:  http://blog.sina.com.cn/s/blog_9cd1705d01019qlt.html


iPhone-获取网络数据或者路径的文件名 


iPhone中,在网络中的数据流中提取链接中的文件名称时,有很多方法,这里总结一些。 
方法一:最直接。 
NSString * urlString = @”http://www.baidu.com/img/baidu_logo_fqj_10.gif”; 
NSString *fileName = [urlString lastPathComponent]; 
NSLog(@”%@”,fileName); 
 
方法二:根据字符或者时字符串分割。 
NSString *link = @”http://www.baidu.com/img/baidu_logo_fqj_10.gif”; 
NSString *filename = [[NSString alloc] init]; 
NSArray *SeparatedArray = [[NSArray alloc]init]; 
SeparatedArray =[link componentsSeparatedByString:@"/"]; 
filename = [SeparatedArray lastObject]; 
NSLog(@”%@”,SeparatedArray); 
NSLog(@”%@”,filename); 
[filename release]; 

方法三:将链接看成路径。 
NSString * urlString = @”http://www.baidu.com/img/baidu_logo_fqj_10.gif”; 
NSArray *urlCom = [[NSArray alloc]initWithArray:[url pathComponents]]; 
NSLog(@”%@”,[urlCom lastObject]); 
[urlCom release]; 

方法四:NSRange.它在截取二进制文件的时候十分方便。 
NSString * urlString = @”http://www.baidu.com/img/baidu_logo_fqj_10.gif”; 
NSString * fileName; 
NSRange range = [urlString rangeOfString:@"/" options:NSBackwardsSearch]; 
if (range.location != NSNotFound) 

fileName = [urlString substringFromIndex:range.location+1]; 
if([[fileName lowercaseString]hasSuffix:@”.gif”]) 

NSLog(@”%@”,fileName); 


else 

return; 
}
在实现手机上传附件的功能,通常涉及到以下几个步骤: 1. **文件选择**:首先,你需要在应用程序内提供一个让用户选择文件的界面,这通常是通过系统的文件浏览器或相机、相册等模块完成。 2. **获取文件路径**:用户选择文件后,应用会得到文件的完整路径。在Android中,可以使用`ACTION_GET_CONTENT` Intent从用户选择的文件系统选取文件;iOS平台上则需要使用`UIImagePickerController`。 3. **文件编码**:如果文件是图片或其他二进制数据,可能需要将其转换成流或者Base64字符串以便在网络上传。 4. **HTTP上传**:创建一个网络请求(如使用`OkHttp`、`AFNetworking`或原生的网络库),将文件内容作为POST请求的数据发送到服务器。通常会有个文件名字段以及可能是其他元数据。 5. **错误处理**:处理可能出现的网络错误(例如超时、断网)、服务器响应错误(如400 Bad Request)以及文件大小超出限制等问题。 ```java // Android示例(Java) File file = ... // 获取用户选择的文件 RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", file.getName(), Requests.createRequestBodyFromFile(file)) .build(); Response response = client.newCall(new UploadRequest(url, requestBody)).execute(); ... // iOS 示例(Swift) let fileURL = ... // 获取用户选择的文件URL let imageData = Data(contentsOf: fileURL) let boundary = UUID().uuidString let body = NSMutableData(data: "") body.append("--\(boundary)\r\n".data(using: .utf8)!) body.append("Content-Disposition: form-data; name=\"file\"; filename=\"\(fileURL.lastPathComponent)\"\r\n".data(using: .utf8)!) body.append("Content-Type: application/octet-stream\r\n\r\n".data(using: .utf8)) body.append(imageData) ... ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值