我有一个Base64字符串可以以data:image/png;base64
或任何其他格式(如data:video/mp4
开头)基于用户上传的文件,我正在编写一个ajax调用函数,该函数应该采用该base64字符串并获取它的类型以及稍后的内容
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RD.....
所以如果所有的base64字符串都应该以:data:type/type;base64,
开头,我想找到,
的第一个出现,然后将data:type/type;base64
保存在字符串中以了解类型并使我成为原始base64字符串如下所示:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RD....
我做的是这个:
$.ajax({
type: 'POST',
url: "Uploadfile.aspx/uploadfile",
data: '{ "fileData" : "' + data+ '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
其中data
是整个base64字符串
C#
[WebMethod(EnableSession = true)]
public static void uploadfile(string fileData)
{
Regex r = new Regex(/[^;]*/);
Match m = r.Match(fileData);
while (m.Success)
{
// how can i continue my function
}
}
是我的逻辑正确或有更好的方法来做到这一点,我怎样才能继续我的功能任何人都可以帮助。我被困住了,我不知道如何继续
答案 0 :(得分:0)
您可以尝试这样的事情:
Regex r = new Regex("^data:(.*?);base64,(.*?)$");
Match m = r.Match(fileData);
if(m.Success) {
string mimeType = m.Groups[1].Value;
}
符合模式:
数据:的 Mime类型强>; BASE64,的的FileData 强>
含义m.Groups[1]
将包含MIME类型,m.Groups[2]
将包含base64编码的字符串数据。