Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
 
Melany
21 / 4 / 2
Регистрация: 05.07.2015
Сообщений: 126
1

Download .zip file to vk.com, using their api

01.05.2017, 01:51. Просмотров 555. Ответов 0

Здравствуйте, подскажите пожалуйста, я хочу загрузить файл .zip в документы юзера в vk.com, в документации написано, что для этого нужно пройти 3 этапа
1, получить адрес сервера, что у меня поучилось
2, на этом этапе нужно загрузить файл, вот на этом этапе у меня всегда приходит {"error":"unknown error"}

Подскажите, пожалуйста что я делаю не так,
uploadUrl - это путь к серверу vk.com, полученный на первом этапе

Код
   func uploadFileToServer(_ uploadUrl: String, withFileUrl name: URL, onCompletion:@escaping (_ receivedFile: String?) -> Void) {
        let url = URL(string:uploadUrl)
        guard let urlExist = url else { return }
        var urlRequest = URLRequest.init(url: urlExist, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 30)
        var dataZip: Data?
        do {
            dataZip = try Data.init(contentsOf: name)
        } catch let error as NSError {
            print(error.localizedDescription)
        }
        
        var _params: [String : Data] = Dictionary()
        _params["file"] = dataZip
        var body = Data()
        
        let boundary = "---------------------------0983745982375409872438752038475287"
        
        let contentType = "multipart/form-data; boundary=\(boundary)"
        urlRequest.addValue(contentType, forHTTPHeaderField:"Content-Type")

        if let zipData = dataZip {
            
            body.append("--\(boundary)\r\n".data(using: .utf8)!)
            body.append("Content-Disposition: attachment; name="Document"; filename=".zip\r\n".data(using: .utf8)!)
            body.append("Content-Type: application/octet-stream\r\n\r\n".data(using: .utf8)!)
            body.append(zipData)
            body.append("\r\n".data(using: .utf8)!)
        }
        
        body.append("--\(boundary)--\r\n".data(using: .utf8)!)
        
        urlRequest.httpBody = body
        
        urlRequest.httpMethod = "POST"

        let task = URLSession(configuration: .default).dataTask(with: urlRequest) {
            [weak self](data, response, error) -> Void in
            print(response)
            if let data = data {
                do {
                    if let returnData = String(data: data, encoding: .utf8) {
                        print(returnData)
                        onCompletion(returnData)
                    }
                    
                } catch let error as NSError {
                    print(error.localizedDescription)
                }
                
            } else if let error = error {
                print(error.localizedDescription)
            }
 
        }
        task.resume()
  
    }
Спасибо огромное за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2017, 01:51
Ответы с готовыми решениями:

File Download
Есть форма, на форме поле "Pict" типа Richtext Есть xpage с 2мя...

контрол File Download
как в данный контрол отобразить аттачи из другой базы? все другие поля...

WinInet Download File
Нужна небольшая помощь, как этот кусок кода отвязать от консольного приложения...

Download file asp ajax
Добрый вечер, подскажите пожалуйста, вызываю метод через ajax который...

Download file from Google Drive
Проблема состоит в следующем: необходимо используя Google Drive API загрузить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2017, 01:51

Commons net ftp file download
Есть код, который делает download файла c ftp. Для локального фтп всё...

Ruby on Rails Paperclip Mongoid file download
Добрый день! Кто может покажите пример кода Ruby on Rails как download file с...

Microsoft Download File Manager - Как его запустить повторно?
Windows Download Center + Internet Explorer + Microsoft Download File Manager -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru