i***@163.com
i***@163.com
  • 发布:2022-08-12 16:19
  • 更新:2022-12-23 19:13
  • 阅读:846

ios端使用原生获取“文件”中的pdf,然后再使用uni.uploadFile无法上传

分类:uni-app

ios端使用的是本地原生打包,调用原生的UIDocumentPickerViewController,打开“文件”,选择(如下图)。获取路径file:///private/var/mobile/Containers/Shared/AppGroup/xxxx/File%20Provider%20Storage/%E6%8E%A5%E5%85%A5%E6%96%87%E6%A1%A3.pdf。
但是使用这个路径uni.uploadFile上传的时候就一直上传失败,拍照和照片是上传成功的。
求大神指导

2022-08-12 16:19 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

保存到doc目录

  • i***@163.com (作者)

    这个是调用原生的“文件”app里面存的数据,怎么保存呀?是调用uni.savefile方法么?


    2022-08-15 08:59

l***@163.com

l***@163.com

哥们这个问题解决了吗?我也是你这种情况,无法上传。

l***@163.com

l***@163.com

此问题已解决,需要把文件写入沙盒里面,我是写到沙盒里面的temp里面了。

        [fileCoordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {  
            NSString *file = newURL.absoluteString;  
            NSString *name = [file lastPathComponent];  
            NSError *readError;  
            NSData *fileData = [NSData dataWithContentsOfURL:newURL options:NSDataReadingMappedIfSafe error:&readError];  
            if (readError) {  
                self.res([self result:0 :@"选取文件失败" :file], NO);  
            } else {  
                NSString *tmpPath = NSTemporaryDirectory();  
                NSString *fullPath = [NSString stringWithFormat:@"%@%@", tmpPath, name];  
                BOOL downRes = [fileData writeToFile:fullPath atomically:YES];  
                if (downRes) {  
                    self.res([self result:1 :@"选取文件成功" :fullPath], NO);  
                } else {  
                    self.res([self result:0 :@"选取文件失败" :file], NO);  
                }  
            }  
        }];

要回复问题请先登录注册