2015-09-29 2 views
2

У меня проблема с загрузкой файлов через службу QuickBlox, она появилась недавно, я не знаю, когда именно, но я заметил сегодня.Quickblox Загрузка файлов

Теперь, когда я вызываю метод:

[QBRequest completeBlobWithID:blob.ID size:fileSize successBlock:^(QBResponse *response) { } } errorBlock:^(QBResponse *response) { }

Я всегда получаю ошибку.

NSLocalizedDescription = "Expected status code in (200-299), got 422"; 
NSLocalizedRecoverySuggestion = "{\"errors\":{\"blob\":[\"is not uploaded yet\"]}}"; 

enter image description here

Я не сделал никаких изменений в коде. Но на данный момент у меня есть эта проблема. Вы можете проверить этот вопрос here.

ответ

0

После исследования, я заметил, что в первом запросе:

[QBRequest createBlob:b successBlock:^(QBResponse *response, QBCBlob *blob) {} errorBlock:^(QBResponse *response) {}]; 

Возвращает BLOBS объекты с другими параметрами.

enter image description here

Теперь у нас нет AWSAccessKeyId.

Как создать запрос амазонки с новыми параметрами?

2

Да, мы обновили AWS SDK на внутреннем интерфейсе и теперь все параметры немного отличается

На самом деле я рекомендую использовать

   NSData *file = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"London" ofType:@"jpg"]]; 

       [QBRequest TUploadFile:file fileName:@"Great Image" contentType:@"image/jpg" isPublic:NO successBlock:^(QBResponse *response, QBCBlob *blob) { 
        NSLog(@"Successfull response!"); 
       } statusBlock:^(QBRequest *request, QBRequestStatus *status) { 
        NSLog(@"upload progress: %f", status.percentOfCompletion); 
       } errorBlock:^(QBResponse *response) { 
        NSLog(@"Response error: %@", response.error); 
       }]; 

Он делает все 3 запросов, так что вам не нужно проанализируйте все эти параметры вручную.

В любом случае, если вы все равно хотите запустить эти 3 запроса вручную, просто замените старые параметры новыми.

+0

К сожалению, я не могу использовать этот метод, потому что у нас большой размер, и нам нужны данные загрузки из файла, а не из памяти. –

+0

Я думаю, что я должен следовать следующей документации http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html#sigv4-post-example-file-upload? Это правильно? –

1

Если я заменяю старые параметры с новой помощью Curl:

curl -X POST -F "key=700e17c5631a4aa4acbc470dafbc1eb500" 
      -F "acl=authenticated-read" 
      -F "success_action_status=201" 
      -F "policy=eyJleHBpcmF0aW9uIjoiMjAxNS0wOS0zMFQxMjozNToxN1oiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJxYnByb2QifSx7ImFjbCI6ImF1dGhlbnRpY2F0ZWQtcmVhZCJ9LHsiQ29udGVudC1UeXBlIjoiaW1hZ2UvanBlZyJ9LHsic3VjY2Vzc19hY3Rpb25fc3RhdHVzIjoiMjAxIn0seyJFeHBpcmVzIjoiV2VkLCAzMCBTZXAgMjAxNSAxMjozNToxNyBHTVQifSx7ImtleSI6IjcwMGUxN2M1NjMxYTRhYTRhY2JjNDcwZGFmYmMxZWI1MDAifSx7IngtYW16LWNyZWRlbnRpYWwiOiJBS0lBSVk3S0ZNMjNYR1hKN1I3QS8yMDE1MDkzMC91cy1lYXN0LTEvczMvYXdzNF9yZXF1ZXN0In0seyJ4LWFtei1hbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJ4LWFtei1kYXRlIjoiMjAxNTA5MzBUMTEzNTE3WiJ9XX0=" 
      -F "x-amz-algorithm=AWS4-HMAC-SHA256" 
      -F "x-amz-credential=AKIAIY7KFM23XGXJ7R7A/20150930/us-east-1/s3/aws4_request" 
      -F "x-amz-date=20150930T113517Z" 
      -F "x-amz signature=7627f482b34d4367a0fe94c66d92e4bfd5bb21d52aa10c7d1e0bee79fe10262d" 
      -F "Content-Type=image/jpeg" 
      -F "[email protected]" http://qbprod.s3.amazonaws.com/ 

Тогда я получаю ошибку:

<?xml version="1.0" encoding="UTF-8"?> 
    <Error> 
    <Code>AccessDenied</Code> 
    <Message>Invalid according to Policy: Policy Condition failed: ["eq", "$Expires", "Wed, 30 Sep 2015 12:35:17 GMT"]</Message> 
    <RequestId>F185E7B81C9E7A93</RequestId> 
<HostId>zsexgCQc+v3YzJllJBAcU74GT1vBv1Zthr35jfwU1OFEczb8n545nf5ItT6z1pHGaBZNf0SEwqg=</HostId> 
    </Error> 

Или этот запрос:

curl -X POST -F "[email protected]" "https://qbprod.s3.amazonaws.com/?Content-Type=image%2Fjpeg&Expires=Wed%2C%2030%20Sep%202015%2012%3A51%3A50%20GMT&acl=authenticated-read&key=364ee836073642b1b9e096c56901744800&policy=eyJleHBpcmF0aW9uIjoiMjAxNS0wOS0zMFQxMjo1MTo1MFoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJxYnByb2QifSx7ImFjbCI6ImF1dGhlbnRpY2F0ZWQtcmVhZCJ9LHsiQ29udGVudC1UeXBlIjoiaW1hZ2UvanBlZyJ9LHsic3VjY2Vzc19hY3Rpb25fc3RhdHVzIjoiMjAxIn0seyJFeHBpcmVzIjoiV2VkLCAzMCBTZXAgMjAxNSAxMjo1MTo1MCBHTVQifSx7ImtleSI6IjM2NGVlODM2MDczNjQyYjFiOWUwOTZjNTY5MDE3NDQ4MDAifSx7IngtYW16LWNyZWRlbnRpYWwiOiJBS0lBSVk3S0ZNMjNYR1hKN1I3QS8yMDE1MDkzMC91cy1lYXN0LTEvczMvYXdzNF9yZXF1ZXN0In0seyJ4LWFtei1hbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJ4LWFtei1kYXRlIjoiMjAxNTA5MzBUMTE1MTUwWiJ9XX0%3D&success_action_status=201&x-amz-algorithm=AWS4-HMAC-SHA256&x-amz-credential=AKIAIY7KFM23XGXJ7R7A%2F20150930%2Fus-east-1%2Fs3%2Faws4_request&x-amz-date=20150930T115150Z&x-amz-signature=e7a6bb40314389d2ccaed103cb4e3e5863cdb9ab2e836abeb95f2d37e52adcd4" 

И я получаю другая ошибка:

<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>InvalidArgument</Code> 
<Message>Conflicting query string parameters: acl, policy</Message> <ArgumentName>ResourceType</ArgumentName> <ArgumentValue>acl</ArgumentValue><RequestId>DE19DF947C9ED08C</RequestId><HostId>uZchgGd79FPhotgy/gyzNIkKPWmV3WIsDpw2q46P4xPM4JVLe0T5/fPYV7UZ2jxb</HostId></Error> 
+1

Вот список всех параметров http://quickblox.com/developers/Content#Request_.26_Response –

+0

Отлично! Теперь это работает. Благодарю. –

Смежные вопросы