2012-12-13 12 views
6

हाय Google डिस्क API सहयोगी स्टाफ,Google डिस्क (डॉक्स) आयात संबंधी त्रुटि: अद्यतन डॉक्स में नहीं दिखाया गया चित्र फ़ाइलें

पिछले कुछ दिनों के लिए, हम Google डिस्क के साथ एक गंभीर संकट मिले हैं।

हम अब छवियों के साथ दस्तावेज़ दस्तावेज़ अपडेट नहीं कर सकते हैं। जब हमारा आईफोन ऐप छवियों के साथ डॉक्स दस्तावेज़ को अपडेट करने का अनुरोध भेजता है, तो सर्वर ठीक हो जाता है लेकिन अंदर की छवियों को कभी भी अपलोड नहीं किया जाएगा।

समस्या को पुन: उत्पन्न करने के लिए कोड यहां है।

- (void)selfOverwriteSelectedFile:(GTLDriveFile *)gtlDriveFile 
{ 
    // -- not working type -- can't upload images on ODT, HTML, RTF, PDF 
    NSString *mimetype = @"application/vnd.oasis.opendocument.text"; //@"text/html" @"application/rtf" @"application/pdf" 

    //works: DOCX 
    //NSString *mimetype = @"application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 

    NSString *downloadUrl = [gtlDriveFile.exportLinks additionalPropertyForName:mimetype]; 

    //1st request: download the file 
    GTMHTTPFetcher *fetcher = [self.driveService.fetcherService fetcherWithURLString:downloadUrl]; 

    [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { 
     //2nd request: re-upload the same file 
     gtlDriveFile.mimeType = mimetype; 
     GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithData:data MIMEType:mimetype]; 
     GTLQueryDrive *query = [GTLQueryDrive queryForFilesUpdateWithObject:gtlDriveFile fileId:gtlDriveFile.identifier uploadParameters:uploadParameters]; 
     query.convert = query.newRevision = query.setModifiedDate = YES; 

     [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLDriveFile *newGtlFile, NSError *error2nd) { 
     }]; 
    }]; 
} 

//replace the method for easy-test 
-(void)duplicateSelectedFile 
{ 
    GTLDriveFile *selectedFile = [self selectedFileListEntry]; 
    [self selfOverwriteSelectedFile:selectedFile]; 
} 

सबसे आसान प्रजनन के लिए,

  1. डाउनलोड नवीनतम "गूगल एपीआई ग्राहक ऑब्जेक्टिव-सी के लिए लाइब्रेरी"।
  2. एक्सकोड में ड्राइव नमूना प्रोजेक्ट खोलें।
  3. कोड के साथ "- (शून्य) डुप्लिकेट चयनित चयन" विधि को बदलें।
  4. संशोधित नमूना ऐप को संकलित और निष्पादित करें, "फ़ाइल सूची प्राप्त करें", छवियों के साथ एक दस्तावेज़ फ़ाइल का चयन करें, फिर "डुप्लिकेट" टैप करें।
  5. चयनित फ़ाइल को उसी सामग्री के साथ ओवरराइट किया जाना चाहिए। हालांकि, अंदर की छवियां सभी खो गई हैं (प्रतीक्षा करने के लिए प्रतीक्षा राज्य पर)।

एफवाईआई, ओडीटी/एचटीएमएल/आरटीएफ/पीडीएफ आयात काम नहीं करता है। हालांकि, docx आयात काम करता है।

कृपया जितनी जल्दी हो सके समस्या को ठीक करें।

आपके समर्थन के लिए धन्यवाद।

उत्तर

0
(void)loadFileContent { 

    alert = [DrEditUtilities showLoadingMessageWithTitle:@"Loading file content" 
                  delegate:self]; 

    self.webView.delegate = self; 

    NSString *exportURLStr = nil; 
    NSString *downloadUrlStr = nil; 

    if (![self.driveFile.downloadUrl length] > 0) { 


    if ([exportURLStr length] == 0) { 

     exportURLStr = [self.driveFile.exportLinks JSONValueForKey:@"text/plain"]; 

    } 

    if([exportURLStr length] == 0) 
    { 

     exportURLStr = [self.driveFile.exportLinks JSONValueForKey:@"image/jpeg"]; 

     self.webView.hidden= FALSE; 

     NSString *imgHTMLTag = [NSString stringWithFormat:@"<img src=\"file://%@\" />", exportURLStr]; 

     if ([imgHTMLTag length] != 27) { // null 

      [self.webView loadHTMLString:imgHTMLTag baseURL:nil]; 
      [alert dismissWithClickedButtonIndex:0 animated:YES]; 
      return; 

     } 

    } 

    if([exportURLStr length] == 0) 
    { 

     exportURLStr = [self.driveFile.exportLinks JSONValueForKey:@"application/pdf"]; 

     self.webView.hidden= FALSE; 

     NSURL *targetURL = [NSURL URLWithString:exportURLStr]; 
     NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; 
     [self.webView loadRequest:request]; 
     [alert dismissWithClickedButtonIndex:0 animated:YES]; 
     return; 

    } 

    if ([exportURLStr length] != 0) { 


    GTMHTTPFetcher *fetcher = 
    [self.driveService.fetcherService fetcherWithURLString:exportURLStr]; 

    [fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) { 

    [alert dismissWithClickedButtonIndex:0 animated:YES]; 
    if (error == nil) { 


     NSString* fileContent = [[NSString alloc] initWithData:data 
                encoding:NSUTF8StringEncoding]; 

     self.webView.hidden = TRUE; 

     self.textView.text = fileContent; 

     self.originalContent = [fileContent copy]; 

    } else { 

     NSLog(@"An error occurred: %@", error); 
     [DrEditUtilities showErrorMessageWithTitle:@"Unable to load file" 
             message:[error description] 
             delegate:self]; 

    } 
    }]; 
    } 

    else 
    { 

     [alert dismissWithClickedButtonIndex:0 animated:YES]; 

    } 


    } 

    else 
    { 

     downloadUrlStr = self.driveFile.downloadUrl; 

     NSLog(@"%@",downloadUrlStr); 

     NSArray *arr = [downloadUrlStr componentsSeparatedByString:@"&"]; 
     urlString = [arr objectAtIndex:0]; 

     NSURL *url =[NSURL URLWithString:urlString]; 
     NSURLRequest *urlRequest=[NSURLRequest requestWithURL:url]; 

     self.webView.hidden = FALSE; 
     [self.webView loadRequest:urlRequest]; 
     [alert dismissWithClickedButtonIndex:0 animated:YES]; 

     [self performSelector:@selector(downloadFile) withObject:nil afterDelay:0.5]; 
     // [self downloadFile]; 

    } 

} 
संबंधित मुद्दे