uni-app IOS的UTS插件里代码生成的文件保存在沙盒目录里,转移到uni-app的_doc目录的问题。
uni-app IOS的UTS插件里代码生成的文件保存在沙盒目录里,转移到uni-app的_doc目录的问题。
在UTS的插件里,用swift的PDFKit生成了一个pdf文件,保存在了 file:///private/var/mobile/Containers/Data/Application/81B0FD5A-6170-4E21-899E-B423C5A33D79/tmp/1734014540322.831.pdf 里面。
nvue页面里面获取到了这个路径之后,有什么方便的方法把它转存到 plus.io.PRIVATE_DOC 目录里面吗?
我尝试了多次,都是不可读取,不知道是我的代码问题,还是本身不能这么操作。
兄弟 解决了吗 碰到同样的问题
在uni-app项目中,若你需要将UTS插件生成的文件从iOS的沙盒目录转移到应用的_doc
目录,可以通过原生的iOS代码来完成这一任务。以下是一个如何在uni-app项目中通过自定义原生插件来实现这一功能的示例。
1. 创建原生插件
首先,你需要创建一个iOS原生插件。在uni-app项目的nativeplugins
目录下创建一个新的文件夹,比如FileTransferPlugin
。
2. 编写iOS原生代码
在FileTransferPlugin
文件夹中,创建FileTransferPlugin.h
和FileTransferPlugin.m
文件。
FileTransferPlugin.h
#import <Foundation/Foundation.h>
#import <UniAppPlugin/UniModule.h>
@interface FileTransferPlugin : NSObject <UniModule>
- (void)transferFileFromSandboxToDocDirectory:(NSDictionary *)options success:(void (^)(NSDictionary *result))success fail:(void (^)(NSError *error))fail;
@end
FileTransferPlugin.m
#import "FileTransferPlugin.h"
#import <UIKit/UIKit.h>
@implementation FileTransferPlugin
- (void)transferFileFromSandboxToDocDirectory:(NSDictionary *)options success:(void (^)(NSDictionary *result))success fail:(void (^)(NSError *error))fail {
NSString *sourcePath = [options[@"sourcePath"] stringByExpandingTildeInPath];
NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *destPath = [[documentDirectories firstObject] stringByAppendingPathComponent:[options[@"destFileName"] stringByExpandingTildeInPath]];
NSError *error = nil;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destPath error:&error];
if (error) {
fail(error);
} else {
success(@{@"destPath": destPath});
}
}
@end
3. 注册插件
在nativeplugins.json
中注册这个插件:
{
"plugins": {
"FileTransferPlugin": {
"package": "com.example.filetransfer",
"platforms": ["ios"],
"version": "1.0.0",
"provider": "your_name"
}
}
}
4. 在uni-app中使用插件
在uni-app的JavaScript代码中调用这个插件:
const fileTransferPlugin = uni.requireNativePlugin('FileTransferPlugin');
fileTransferPlugin.transferFileFromSandboxToDocDirectory({
sourcePath: 'path/to/source/file',
destFileName: 'destination_file_name.ext'
}, (res) => {
console.log('File transferred successfully:', res.destPath);
}, (err) => {
console.error('File transfer failed:', err);
});
以上代码示例展示了如何在uni-app项目中通过原生插件将文件从iOS的沙盒目录转移到应用的_doc
目录。请注意,你需要根据实际情况调整路径和文件名。