匹配第一次出现的字符

时间:2014-09-01 08:38:13

标签: c# javascript

我有一个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 
   }

}

是我的逻辑正确或有更好的方法来做到这一点,我怎样才能继续我的功能任何人都可以帮助。我被困住了,我不知道如何继续

1 个答案:

答案 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编码的字符串数据。