从 php 网站解码附件 url

Posted

技术标签:

【中文标题】从 php 网站解码附件 url【英文标题】:Decoding attachments url from php website 【发布时间】:2013-07-16 23:37:32 【问题描述】:

所以我有一个内置 php(IP 板)的网站,我的 ios 应用程序中有一个下载管理器,可以检测 zip、deb 等文件扩展名。但是我找不到让它识别的方法板子用来附加文件的 url。

我现在使用的代码:

//Download manager
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

    if(navigationType == UIWebViewNavigationTypeLinkClicked) 
        NSURL *theRessourcesURL = [request URL];
        NSString *fileExtension = [theRessourcesURL pathExtension];

        NSLog(@"fileExtension is: %@", fileExtension);
        if ([fileExtension hasSuffix:@"zip"] || [fileExtension hasSuffix:@"deb"] || [fileExtension hasSuffix:@"rar"] || [fileExtension hasSuffix:@"mp3"] || [fileExtension hasSuffix:@"pdf"] || [fileExtension hasSuffix:@"exe"] || [fileExtension hasSuffix:@"mp4"] || [fileExtension hasSuffix:@"flv"] || [fileExtension hasSuffix:@"torrent"] || [fileExtension hasSuffix:@"png"] || [fileExtension hasSuffix:@"jpg"] || [fileExtension hasSuffix:@"jpeg"]) 

            NSError *error = nil; //error setting
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
            NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"downloads"];

            if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
                [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder

            HCDownloadViewController *dlvc = [[HCDownloadViewController alloc] init];
            [dlvc downloadURL:theRessourcesURL userInfo:nil];


            [self.navigationController setNavigationBarHidden:NO];
            self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0/255.0f green:0/255.0f blue:0/255.0f alpha:1];
            [self.navigationController pushViewController:dlvc animated:YES];

            dlvc.delegate = self;
            return NO;
        
        else 
        
    
    return YES;

目前该网站上传的附件提供如下链接:

http://mysite.com/index.php?app=core&module=attach&section=attach&attach_id=38354

实现这一目标的最佳方法是什么?

感谢您的帮助。

7/17 更新:

根据我尝试收集的内容,我正在尝试使用以下内容。但我似乎无法将其链接到下载管理器以启动下载视图控制器。

//New method I'm trying
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

    NSString *userId= [prefs stringForKey:@"userIdkey"];

    NSString *urlStr = [NSString stringWithFormat:@"http://mysite.com/index.php?app=core&module=attach&section=attach&attach_id=%@",userId];

//Need to push this view controller like the file extension code above
    HCDownloadViewController *dlvc = [[HCDownloadViewController alloc] init];
    [dlvc downloadURL:theRessourcesURL userInfo:nil];

7/18 更新:

在这里尝试其他东西,但仍然没有推动视图控制器。

NSURL *url = [request URL];
NSString *id = @"12212323";
NSString *fullURL = [[url pathExtension] initWithFormat:@"www.mysite.com/index.php?app=core&module=attach&section=attach&attach_id=%@", id];

抛出此日志:

* WebKit 在 webView:decidePolicyForNavigationAction:request:frame:decisionListener 中丢弃了一个未捕获的异常: 委托:* 初始化方法 -initWithFormat:locale:arguments: 不能发送到 NSPathStore2 类的抽象对象:创建一个具体实例!

【问题讨论】:

【参考方案1】:

通过调整服务器端的一些东西解决了这个问题,然后通过使用这个找到了扩展。

NSString *fileExtension = [[externalURL absoluteString] pathExtension];

不知道为什么这被标记为已编辑,而代码完全相同..

  //My code
    NSString *fileExtension = [[externalURL absoluteString] pathExtension];

【讨论】:

以上是关于从 php 网站解码附件 url的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WordPress 网站 URL 中删除 index.php [重复]

PHP GET 参数自动 urldecode

php 从URL获取附件ID

Python3 如何对url解码?

PHP 短哈希,如 URL 缩短网站

是否需要网站(服务器)来处理 gcm 操作,如上传附件、登录等