1
我需要上傳圖像到我已經使用文件選擇器來獲取圖像的服務器,我重視我的樣本代碼,但它不工作上傳圖像到服務器黑莓10 QML
我的文件選擇器代碼
在C ` Button {
text: "Change Profile Image"
onClicked {
filePicker.open();
}
attachedObjects: [
FilePicker {
id: filePicker
property string selectedFile
type: FileType.Picture
onFileSelected: {
selectedFile = selectedFiles[0]
image.imageSource = selectedFile
_settings.showToast(selectedFile);
_settings.isUpdate(selectedFile);
}
}
]`
我的圖像更新代碼++
`void Settings::isUpdate(QString selectedFile){
QString path("asset:///Icon/mess.jpg");
//php script that receives the image
QNetworkRequest requete(QUrl("http://192.168.1.176:2222/api?type=uploadimages&name=IMG_00000001.jpg&pin=123456")); //our server with php-script
QByteArray boundary = "-------------------------87142694621188";
QFile file(path);
if (!file.open(QIODevice::ReadOnly))
{
qDebug()<<"erreur read image";
return;
}
QByteArray fileContent(file.readAll());
QByteArray data = "--" + boundary + "\r\n";
data += "Content-Disposition: form-data; name=\"data\"; filename=\"IMG_00000001.jpg\";\r\n";
data += "Content-Type: image/jpg\r\n\r\n" + fileContent + "\r\n";
data += "--" + boundary + "--\r\n";
requete.setRawHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
requete.setRawHeader("Content-Length", QString::number(data.size()).toAscii());
file.close();
qDebug() <<"data"<< data.size();
QNetworkAccessManager *am = new QNetworkAccessManager(this);
QNetworkReply *reply = am->post(requete,"&data="+data);
QObject::connect(am, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void Settings::replyFinished(QNetworkReply *reply)
{
reply->open(QIODevice::ReadOnly);
if(reply->error() == QNetworkReply::NoError)
{
QByteArray str=(reply->readAll());
QString response = QString::fromUtf8(str.data(), str.size());
qDebug()<<" re "<<response;
}
else
qDebug()<<"error response server";
}`
我可以能夠得到響應,但不能將圖片上傳到服務器
感謝
開始問一個問題:你問的幫助,但沒有告訴我們發生了什麼。順便說一句,你應該直接上傳一個QIODevice而不是QByteArray以獲得更好的內存性能 – Benoit
我能夠從url獲得響應,但無法上傳圖像 – Vendetta
嘗試直接執行am-> post一個QIODevice或byteArray。大小標題應自動生成 – Benoit