2017-02-19 8 views
0

Я попытался сохранить в ведро S3 с помощью Parse Server, и его можно сохранить правильно, когда файл невелик, например 864.2KB. Однако, когда файл большой, скажем, 5 МБ, он жалуется на сообщение с сообщением: «Данные не могут быть прочитаны, потому что они не в правильном формате»Не удалось сохранить большой файл на S3 с помощью сервера Parse

Я использую следующий код, чтобы сохранить видео файл на S3

func saveVideo(withVideoURL url: URL){ 
     let post = PFObject(className: "Post") 
     post["caption"] = "Out of the game for 6 months, but back with vengeance. Meet your 2017 AO Men's champion" 
     do{ 
      let data = try Data(contentsOf: url) 
      print(data) 
      post["media"] = PFFile(data: data) 
      post.saveInBackground { (success, error) in 
       if success{ 
        print("video saved") 
       }else{ 
        print("failed") 
        if error != nil{ 
         print(error!.localizedDescription) 
        }else{ 
         print("erorr is nil") 
        } 
       } 
      } 
     }catch let error as NSError{ 
      print("can't read") 
      print(error.localizedDescription) 
     } 
    } 

Кроме того, даже при небольшой видеофайл действительно сохраняются на S3, он содержит расширение .bin вместо, например, .mp4. Интересно, что здесь происходит URL, в конечном итоге выглядит что-то вроде этого

https://s3-us-west-1.amazonaws.com/sampleApp/19d5bce20f8b55te1b1b8f370212533e5_file.bin

ответ

1

Вам необходимо оговаривать тип содержимого. Вы можете сделать это так:

post["media"] = PFFile(data: data, contentType: "video/mp4") 
+0

Большое вам спасибо, я совершенно новичок в сервере Parse. Теперь маленький файл правильно сохраняется на S3, я полагаю, что по умолчанию я не могу загрузить видео размером более 1 МБ, верно? Интересно, что это конец синтаксического анализа или S3, которые вызывают проблему, любая помощь оценивается. –

+0

Посмотрите на свой параметр maxupload на вашем синтаксическом анализе, чтобы увидеть, на что он установлен. Значение по умолчанию должно быть 20mb – Cliffordwh

+0

Я попытался найти, где моя максимальная загрузка для сервера синтаксического анализа, который я сейчас развертываю. Я пытался в Google, где я могу установить maxupload, но не повезло. Я попытался проверить index.js, но его там нет. Можете ли вы указать мне какое-то направление, где я могу проверить его и изменить? –

1

следующих настройки в вашем файле индекс parse-server помогут вам:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({limit: '20mb'})); 
app.use(bodyParser.urlencoded({limit: '20mb', extended: true})); 

Если вы используете упругий бобовый стебель, вы должны иметь файл с именем files.config внутри папка .ebextensions, с нижеследующим содержимым.

files: 
/etc/nginx/conf.d/proxy.conf: 
    content: | 
     client_max_body_size 20M; 

Это исправило проблему для меня.