我鼓励您将图像单独上传到您的网络服务器,而不是将其作为 base64 发送。特别是如果您使用 URL 或 JSON 请求发送 base64 数据,您的请求正文的大小有一些限制,并且可能会给您的应用程序和服务器后端带来问题。
相反,您可以使用 HTTPmultipart
请求并使用它发送您的图像数据。
这是一个 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 Web 表单中,假设您有一个名为 的图像控件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;