Я бы посоветовал вам загрузить изображение отдельно на ваш веб-сервер, а не отправлять его как base64.Особенно, если вы используете URL или JSON-запрос для отправки данных base64, есть некоторые ограничения в размере вашего тела запроса и могут быть проблематичными для вашего приложения и серверной части.
Вместо этого вы можете использовать HTTP multipart
запроси отправьте данные своего изображения, используя это.
Вот ссылка на Gist, где вы можете увидеть рабочий пример этого: https://gist.github.com/wzyuliyang/ffc0217015658b87e3fd
Используется python в качестве серверного бэкэнда, но весь процесс - это то, что вы хотите.Например, в реализации Qt вы можете увидеть, как отправлять данные изображения, используя moltipart
данные формы:
//path image
QString path("d:\\people3.jpeg");
//php script that receives the image
QNetworkRequest requete(QUrl("http://*.*.*.*:8080/upload"));
QByteArray boundary = "------WebKitFormBoundarytoHka8LUGjq34sBN";
QFile file(path);
if (!file.open(QIODevice::ReadOnly))
{
qDebug()<<"error read image";
return;
}
QByteArray fileContent(file.readAll());
QByteArray data = boundary + "\r\n";
data += "Content-Disposition: form-data; name=\"file\"; filename=\"people3.jpeg\"\r\n";
data += "Content-Type: image/jpeg\r\n\r\n" + fileContent + "\r\n";
data += boundary + "--\r\n";
requete.setRawHeader("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundarytoHka8LUGjq34sBN");
requete.setRawHeader("Content-Length", QString::number(data.size()).toLatin1 ());
file.close();
QNetworkAccessManager *am = new QNetworkAccessManager(this);
QNetworkReply *reply = am->post(requete,data);
QObject::connect(am, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
Надеюсь, это поможет.
Обновление:
Используя этот подход, у вас будет файл изображения, сохраненный на вашем сервере, а затем вы можете установить атрибут src
тега img
, чтобы просмотреть его.Например:
<img src="http://localhost:8080/images/myimg.jpg">
Но если вы хотите отобразить содержимое base64 на изображении, вы должны сделать это следующим образом:
<img src="data:image/jpeg;base64,/9j/4AAQSk...">
Итак, в вашей веб-форме ASP.NET, если у вас естьэлемент управления изображением с именем image1
, вы можете отобразить изображение base64 следующим образом:
string imgString = "/9j/4AAQSk..."; // Place your actual base64 string here
image1.ImageUrl = String.Format("data:image/jpeg;base64,{0}", imgString);
Кроме того, если вы включили тип изображения в строку, вы можете просто использовать это:
string imgString = "data:image/jpeg;base64,/9j/4AAQSk..."; // Place your actual base64 string here
image1.ImageUrl = imgString;