Swift firebase文件上传

时间:2016-06-27 16:21:09

标签: ios swift firebase

@IBAction func shareButton(sender:AnyObject){

    //Social Share Buttons..

        let shareActionsheet = UIAlertController(title: "Share with", message: nil, preferredStyle: .ActionSheet)
    //Facebook
    let Facebook = UIAlertAction(title: "Facebook", style: .Default){(Alert:UIAlertAction!) -> Void in
    let shareFacebook : SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
        //screenShot
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(306, 441.5), false, 0)
        self.view.drawViewHierarchyInRect(CGRectMake(-35, -35, self.view.bounds.size.width, self.view.bounds.size.height), afterScreenUpdates: true)
        let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
        //screenShot finish

//创建截屏图片
//shareFacebook.addImage(image)

        self.presentViewController(shareFacebook, animated: true, completion: nil)


        if let user = FIRAuth.auth()?.currentUser{



        //dosya upload - servise referans sağla..
        let storage = FIRStorage.storage()

        //referans yolu
        let storageRef = storage.referenceForURL("gs://creawo-80503.appspot.com")

        let data: NSData = NSData()
        // Create a reference to the file you want to upload
        let riversRef = storageRef.child("\(self.user!.uid+"/share_pic.jpg")/")

        // Upload the file to the path "images/rivers.jpg"
        let uploadTask = riversRef.putData(data, metadata: nil) { metadata, error in
            if (error != nil) {
                // Uh-oh, an error occurred!
            } else {

我展示了路径和文件创建。让警报在图像中截取屏幕截图。我想安装firebase     //元数据包含文件元数据,如大小,内容类型和下载URL。

I couldn't find a solution about this place        
let downloadURL = metadata!.downloadURL()
            }
        }

}

1 个答案:

答案 0 :(得分:0)

@IBAction func postAd(sender: AnyObject) {
    self.name = self.textField.text!
    self.category = (self.chooseButton.titleLabel?.text)!
    self.subcat = self.subcategory.text!

    if (self.name != "" && self.category != "" && self.subcat != ""){

        self.price = Int(self.priceField.text!)!
        self.transaction = (self.transactionButton.titleLabel?.text
        )!

        let book = ["productId": self.productId,
                    "name": self.name,
                    "parentId": self.parentId,
                    "price": self.price,
                    "transaction":self.transaction,
                    "category":self.category,
                    "subcat":self.subcat]
        let childUpdates = ["products/\(productId)": book]


        let data: NSData = UIImageJPEGRepresentation(imagePreview.image!, 0.8)!

        // Create a reference to the file you want to upload
        let metadata = FIRStorageMetadata()
        metadata.contentType = "image/jpeg"
        // Upload the file to the path "images/rivers.jpg"
        let uploadTask = storageRef.child("\(productId)").putData(data, metadata: nil) { metadata, error in
            if (error != nil) {
                // Uh-oh, an error occurred!
                print("Error")
            } else {
                print("Successfully posted")
                // Metadata contains file metadata such as size, content-type, and download URL.
                let downloadURL = metadata!.downloadURL()
                print(downloadURL)
            }
        }
        print(uploadTask)


        self.ref.updateChildValues(childUpdates)

        self.performSegueWithIdentifier("productToHome", sender: self)
    }
    else{
        let alert:UIAlertController = UIAlertController(title: "Fill all details", message: "Please Enter all details", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
        print("Fill all the details")
    }
}

我正在我的数据库中上传该书的详细信息。 你可以像我一样使用'元数据'部分。 这里'imagePreview'包含从imagePicker中挑选的图像。下面给出了选择图像的功能。

//Internal function to select image and preview it in Image View
// MARK: - UIImagePickerControllerDelegate Methods
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo editingInfo: [String : AnyObject]) {
    if let pickedImage = editingInfo[UIImagePickerControllerOriginalImage] as? UIImage {
        imagePreview.contentMode = .ScaleAspectFit
        imagePreview.image = pickedImage
    }
    dismissViewControllerAnimated(true, completion: nil)
}

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
    dismissViewControllerAnimated(true, completion: nil)
}
//Image Viewer Ends