Загрузите несколько изображений на Google Drive с помощью API / SDK (IOS, Swift) - PullRequest
0 голосов
/ 12 октября 2018

Я разрабатываю приложение, которое будет запрашивать 5 изображений, назначать их соответствующему UIImageViewer для целей предварительного просмотра, а затем я хочу нажать кнопку загрузки, и все 5 изображений будут отправлены на групповой диск.На данный момент все это работает, за исключением фрагмента кода, который я имею, может загружать изображения, только если они находятся в каталоге документов приложения.Я хотел бы вернуться к 5 ранее выбранным изображениям и загрузить их на командный диск, но я не знаю, как это сделать.

Каждой кнопке был присвоен номер тега, в котором они будут равняться своему назначенному UIImageViewer.Я пытаюсь сослаться на другие ранее выбранные изображения, но в кнопке «UploadAction» появляется ошибка «Невозможно преобразовать значение типа« UIImage »в ожидаемый аргумент типа« Строка »».Вот мой код, любая помощь будет принята с благодарностью!(Это в Swift в Xcode, я не смог найти примеров использования swift для загрузки изображений с помощью камеры телефона или фотогалереи)

import UIKit
import GoogleSignIn
import GoogleAPIClientForREST

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, GIDSignInUIDelegate, UIPickerViewDelegate, UITextFieldDelegate{
    // func numberOfComponents(in pickerView: UIPickerView) -> Int {
    //
    // }

    // func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
     //
    // }

    @IBOutlet weak var imageView1: UIImageView!
    @IBOutlet weak var imageView2: UIImageView!
    @IBOutlet weak var imageView3: UIImageView!
    @IBOutlet weak var imageView4: UIImageView!
    @IBOutlet weak var imageView5: UIImageView!
    @IBOutlet weak var resultsLabel: UILabel!

    var imagePicker = UIImagePickerController()
    var imagePicked = 0

    var cameraPicker = UIImagePickerController()
    var cameraPicked = 0

    fileprivate let service = GTLRDriveService()
    private var drive: ATGoogleDrive?

    override func viewDidLoad() {
        super.viewDidLoad()
        cameraPicker.delegate = self
        cameraPicker.sourceType = .camera
        cameraPicker.allowsEditing = false;     imagePicker.delegate = self
        imagePicker.sourceType = .savedPhotosAlbum
        imagePicker.allowsEditing = false;
        GIDSignIn.sharedInstance().uiDelegate = self;
        self.view.backgroundColor = UIColor.lightGray;

        setupGoogleSignIn()

        drive = ATGoogleDrive(service)
    }

    @IBAction func openCamera(_ sender: UIButton){
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera){
            cameraPicked = sender.tag
            present(cameraPicker, animated: true)
        }
    }

    @IBAction func chooseImage1(_ sender: UIButton) {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.savedPhotosAlbum){
            imagePicked = sender.tag
            present(imagePicker, animated: true)
        }
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage;

        let cameraImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage;

        if imagePicked == 1 {
            imageView1.image = pickedImage
        } else if imagePicked == 2 {
            imageView2.image = pickedImage
        } else if imagePicked == 3 {
            imageView3.image = pickedImage
        } else if imagePicked == 4 {
            imageView4.image = pickedImage
        } else if imagePicked == 5 {
            imageView5.image = pickedImage
        } else if cameraPicked == 6 {
            imageView1.image = cameraImage
        } else if cameraPicked == 7 {
            imageView2.image = cameraImage
        } else if cameraPicked == 8 {
            imageView3.image = cameraImage
        } else if cameraPicked == 9 {
            imageView4.image = cameraImage
        } else if cameraPicked == 10 {
            imageView5.image = cameraImage
        }
        dismiss(animated: true)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true)
    }

    private func setupGoogleSignIn() {
        GIDSignIn.sharedInstance().delegate = self
        GIDSignIn.sharedInstance().uiDelegate = self
        GIDSignIn.sharedInstance().scopes = [kGTLRAuthScopeDriveFile]
        GIDSignIn.sharedInstance().signInSilently()
    }

    // MARK: - Actions
    **@IBAction func uploadAction(_ sender: Any) {
        if let documentsDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last {
            let uploadem = imageView1.image
            drive?.uploadFile("agostini_tech_demo", filePath: uploadem, MIMEType: "image/png") { (fileID, error) in
                print("Upload file ID: \(fileID); Error: \(error?.localizedDescription)")**
            }
        }
    }

    @IBAction func listAction(_ sender: Any) {
        drive?.listFilesInFolder("agostini_tech_demo") { (files, error) in
            guard let fileList = files else {
                print("Error listing files: \(error?.localizedDescription)")
                return
            }

            self.resultsLabel.text = fileList.files?.description
        }
    }
}

// MARK: - GIDSignInDelegate
extension ViewController: GIDSignInDelegate {
    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
       if let _ = error {
       //     service.authorizer = nil
        } else {
        //    service.authorizer = user.authentication.fetcherAuthorizer()
        }
    }
}
...