从imagePicker获取本地文件路径(iOS,Objective C)

时间:2018-04-10 09:44:17

标签: javascript ios objective-c fs

我正在努力从imagePicker获取文件路径并将其发送到服务器。

这是尝试传递本地路径客户端:

NSData *webData = UIImagePNGRepresentation(info[UIImagePickerControllerOriginalImage]);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"test.png"];
[webData writeToFile:localFilePath atomically:YES];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:url.absoluteString
   parameters:@{@"path": localFilePath}
     progress:nil
      success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
... //results always in error

这是收到路径密钥的后端代码(在JavaScript中):

var fs = require('file-system');

file {
 data: fs.readFileSync(path),
}

但是,我总是会遇到这样的错误:

错误:ENOENT:没有这样的文件或目录,打开'/ Library / Developer / CoreSimulator / Devices ...

我的JS代码有问题吗?或者我应该使用其他方法来获取文件路径? 如果有人能帮助我,我会很高兴。

P.S。其他流行的现有StackOverflow答案在获取文件路径时会产生相同的错误代码。

2 个答案:

答案 0 :(得分:0)

这是不可能的。您需要创建该图像的数据并使用multipart将其上载到服务器。 我希望这个链接适合你:

How to get UIImage from local url and post the image to server ?

答案 1 :(得分:0)

要么我误解了这个问题,要么就是在尝试做不可能的事。

设备上的路径(在本例中为模拟器)无法供服务器访问,因为它只存在于设备上。

如果您想要传递实际图片,您需要在请求中发送数据本身,您无法让服务器获取它的路径并通过互联网进入设备以获取它

this question的已接听答案是如何将图像数据附加到AFNetworking请求的示例。不幸的是,我对服务器的了解还不够多,但是我希望你能够以不同的方式获得它,这只是原始图像数据而不是文件路径。