0

だから私はこのライブラリを使用しています: https://github.com/flyingdolphinstudio/Objective-Zip

私はそれを実装し、UIImage と NSString を取り、それぞれ .zip ファイルで .png と .txt にしようとしています。

これらは私の 2 つの懸念事項です。以下の *zipFile をドキュメント ディレクトリに保存しようとしています。

  1. ドロップボックス API を使用すると、ファイル自体を提供してパスをスキップすることができないのはなぜですか。最初に.zipをドキュメントディレクトリに保存してからパスを取得して、それをドロップボックスにアップロードできるようにする必要があるようです。私はそれをしなければなりませんか?

  2. ...writeToFile 行で、ZipFile が writeToFile に応答しない可能性があるという警告が表示されるので、ドキュメント ディレクトリに適切に保存するにはどうすればよいですか?

とにかく、これは私がこれまでに持っているコードです:

        NSString *filename = [NSString stringWithFormat:@"%@.zip", textField.text];
        ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filename mode:ZipFileModeCreate];

        //Image
        NSString *nameImage = @"Image.png";
        NSMutableDictionary *theDictionary = [Singleton sharedSingleton].dictionary;
        NSData *data = [theDictionary objectForKey:@"image"];
        ZipWriteStream *writeImage = [zipFile writeFileInZipWithName:nameImage compressionLevel:ZipCompressionLevelBest];
        [writeImage writeData:data];
        [writeImage finishedWriting];

        //Text
        NSString *nameText = @"Text.txt";
        NSData *dataText = [textView.text dataUsingEncoding:NSUTF8StringEncoding];
        ZipWriteStream *writeText = [zipFile writeFileInZipWithName:nameText compressionLevel:ZipCompressionLevelBest];
        [writeText writeData:dataText];
        [writeText finishedWriting];

        //Now we HAVE to save it to the documents directory to get it to work with dropbox
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
        NSString *filePath = [documentsPath stringByAppendingPathComponent:filename]; //Add the file name
        [zipFile writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:NULL];

        //Save to Dropbox
        NSString *zipPath = [[NSBundle mainBundle] pathForResource:textField.text ofType:@"zip"];
        [[self restClient] uploadFile:filename toPath:@"/" withParentRev:nil fromPath:zipPath];

それで、私はここで何が間違っていますか?

ありがとう!

4

1 に答える 1

1

すでにファイルに書き込みを行っているように見えるZipFileので、のようなものは必要ありませんwriteToFilezipFile必要なパスで初期化するだけで、最後にファイルを閉じて ( [zipFile close])、他のファイルと同じように Dropbox にアップロードします。

于 2013-06-16T17:20:49.873 に答える