2016-10-27 4 views
0

imgur에 그림을 업로드하는 함수를 만들려고합니다. 함수가 아래 양식으로 작동하지만 다르게 예상하고 있습니다.이미지를 imgur에 업로드 할 때 여러 매개 변수를 전달하는 방법

bool ImgurUploader::upload(QImage image) 
{ 
    QByteArray byteArray; 
    QBuffer buffer(&byteArray); 
    image.save(&buffer, "PNG");  

    QByteArray params; 
    params.append(byteArray.toBase64()); 

    QNetworkRequest request; 
    request.setUrl(QUrl("https://api.imgur.com/3/image")); 
    request.setRawHeader("Content-Type", "application/application/x-www-form-urlencoded"); 
    request.setRawHeader("Authorization", "Client-ID 16d41e28a3ba71e"); 

    mAccessManager->post(request, params); 
} 

나는 기대와 같은 형태로 이미지 PARAM을 전달하는 처음 시도했다 :

params.append("image="); 
params.append(byteArray.toBase64()); 

을하지만 내가 할 때 나는 "400 잘못된 요청"을 얻을 오류가 "잘못된 URL입니다 ".

여러 매개 변수를 보내려면 어떻게해야합니까? 잘못된 접근 방식을 사용하고 있습니까?

답변

1

Android Upload Example을 살펴볼 수 있습니다.

업로드 요청 here을 보면, (시도하고있는 것처럼) POST 요청 본문에 매개 변수가 전송되지 않음을 알 수 있습니다. 대신이라는 URL에 개의 검색어가 추가되며 (QUrlQuery을 사용하는 Qt에서 수행 할 수 있음) 요청 본문에 이미지가 전송되며 base64를 사용하여 인코딩 할 필요가 없습니다. 네트워크 트래픽을 절약 할 수 있기 때문에). 내가 찾던 정확히 무엇을

bool ImgurUploader::upload(QImage image, QString title, QString description) 
{ 
    QByteArray byteArray; 
    QBuffer buffer(&byteArray); 
    image.save(&buffer, "PNG");  

    QUrlQuery urlQuery; 
    urlQuery.addQueryItem("title", title); 
    urlQuery.addQueryItem("description", description); 

    QNetworkRequest request; 
    QUrl url("https://api.imgur.com/3/image"); 
    url.setQuery(urlQuery); 
    request.setUrl(url); 
    request.setHeader(QNetworkRequest::ContentTypeHeader, 
         "application/application/x-www-form-urlencoded"); 
    request.setRawHeader("Authorization", "Client-ID 16d41e28a3ba71e"); 

    mAccessManager->post(request, byteArray); 
} 
+0

: 여기

는 업로드 기능을 같이하는 방법입니다! Qt 4.8을 사용하고 있지만 QUrlQuery가 Qt 5.0에 도입되었으므로 QPair에서 QList를 사용해야하지만 원하는대로 작동합니다. 많은 Thnak! 'QList > urlQuery; urlQuery.append (qMakePair (QString ("title"), QString ("MyTitle")))); urlQuery.append (qMakePair (QString ("description"), QString ("MyDescription")))); –

관련 문제