繁体   English   中英

使用API​​ / SDK(IOS,Swift)将多张图片上传到Google云端硬盘

Upload multiple images to Google Drive using API/SDK (IOS, Swift)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在开发一个需要5张图像的应用程序,将其分配给适当的UIImageViewer以进行预览,然后我想点击上载,所有5张图像都将发送到团队。 目前,除了我拥有的代码段之外,所有其他程序都可以正常工作,但仅当它们位于应用程序的文档目录中时,才能上传图像。 我想参考以前选择的5张图像,并将其上传到团队驱动器,但我不知道该怎么做。

每个按钮都被分配了一个标签号,该标签号将等于其指定的UIImageViewer。 我正在尝试引用其他先前选择的图像,但是在“ UploadAction”按钮中显示错误“无法将类型'UIImage'的值转换为预期的参数类型'字符串'”。 这是我的代码,任何帮助将不胜感激! (这是在Xcode中的Swift中,我找不到使用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()
        }
    }
}
问题暂未有回复.您可以查看右边的相关问题.
1 简单的API图片上传到Google云端硬盘

我编写了以下代码,使用服务帐户将图片上传到自己的Google云端硬盘。 我的代码成功返回,并给了我一个ID但实际的Google云端硬盘上没有任何内容。 我确实从setup_upload()的最后一行获得了一个长ID字符串。 但是我的实际Google云端硬盘上没有任何内容。 我期 ...

2 将图片上传到Google云端硬盘OCR

我正在尝试将图像上传到Google云端硬盘进行光学字符识别(OCR)。 这是我的代码: 上面的代码运行没有错误,并且$createdFile是Google_Service_Drive_DriveFile对象形式的有效资源。 问题: 我猜上传成功,因为create()函数 ...

4 使用Fusion Tables将图片上传到Google云端硬盘

有什么方法可以将图片上传到融合表中的Google驱动器,然后将图像的链接插入到融合表中的单元格中? 我想创建一个Fusion Table,其中包含人们的姓名和照片以及有关他们的其他信息。 例如,对于“鲍勃”及其图片和信息,我可能有一行;对于“提姆”及其图片和信息,我可能另外一行。 然后 ...

5 将文件上传到Google云端硬盘API

需要有关google drive API的帮助。 任何帮助,将不胜感激。 在画布上绘制图像并保存到可以工作的文件夹,但我想从其保存路径获取该文件并将其上传到谷歌驱动器。 以下是我的代码。 我没有在upload.php中收到任何错误,但无法上传到谷歌驱动器,因此不确定我哪里出错了。 ...

6 通过API将文件上传到Google云端硬盘

我需要通过API将文件上传到Google云端硬盘的每个人,我所做的正是我所说的https://developers.google.com/drive/quickstart-php 。 我已经生成了访问令牌并将其保存在文件中,问题是它仅在第一次和下一次出现错误时才起作用 在通过表格从 ...

7 使用Google云端硬盘API将文件上传到Google云端硬盘时,出现OutOfMemoryException

这是一个网络应用程序。我想使用GoogleDrive API将大文件上传到Google Drive。 我的代码可以在较小的文件上正常工作。 但是,当涉及到较大的文件时,会发生错误。 我进行了很多搜索,但是找不到工作的解决方案以及某些没有答案的解决方案。 在将文件转换为byte [ ...

8 使用ios上的apiKey将文件上传到Google云端硬盘

我正在尝试将图片上传到Google云端硬盘到我自己的帐户(不是用户帐户),因此我无需向用户请求权限。 为此,我使用apiKey而不是oAuth2方法。 问题是,当我将文件发送给Google时,我得到的错误是“需要登录”,但我想登录,这就是我使用apiKey的原因。 这是我得到的错误: ...

10 在Windows Phone 7.1 C#上使用Google云端硬盘API也在Google云端硬盘上上传图片

我是开发Windows Phone应用程序的新手。 此外,我的笔记本电脑太旧了,无法在Windows Phone 7.5或更高版本上开发或使用Emulator,因此我必须坚持使用旧的WP7.1 我想将所选图像上传到Google驱动器。 选择图像后,我创建了一个浏览图像的按钮和一个“图像 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM