如何判断文件是否已通过NSFileManager ios上传

时间:2015-02-17 04:28:57

标签: ios objective-c nsfilemanager

我正在将文件上传到Dropbox,我想知道我是否可以通过NSFileManager标记任何内容以测试文件是否已经上传。我一直在梳理文档,但还没有找到任何可以提供帮助的内容。

例如,如果我上传了一个名为song.m4a的文件,并且用户在应用程序中更改了该文件的名称,我怎样才能知道该文件是否已使用新名称上传这样文件不会再次上传?

我是否可以设置任何属性或属性来查看文件是否已上传?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用散列,例如你可以计算文件的MD5哈希并将其存储在手机的本地文件中,当用户尝试上传文件时,你不检查它的名字,你只需重新计算MD5哈希并检查它是否存在在您的本地文件中,如果是,则之前上传过一次。

编辑:

您可以将任何内容转换为NSData,然后计算该NSData的哈希值,例如在您的情况下,您可以像这样加载文件

NSData* data = [NSData dataWithContentsOfFile:yourFilePath];

然后你可以像这样哈希吧

- (NSString*)MD5:(NSData*)input
{
  // Create byte array of unsigned chars
  unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

  // Create 16 byte MD5 hash value, store in buffer
  CC_MD5(input.bytes, input.length, md5Buffer);

  // Convert unsigned char buffer to NSString of hex values
  NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
    [output appendFormat:@"%02x",md5Buffer[i]];

  return output;
}

并且不要忘记导入

#import <CommonCrypto/CommonDigest.h>