2015-03-24 4 views
0

Заранее спасибо.Расширение asp: controlParameter для использования с FileUpload control

Возможно ли продлить управление asp:controlParameter в объекте управления с помощью источника данных для размещения элемента управления asp:fileUpload и вернуть строку base64 опубликованного файла.

, например, я хотел бы быть в состоянии сделать это (ключевые области следует отметить, параметр вставки):

<asp:listview runat="server" datasourceID="objDS"> 
<insertTemplate> 
    <asp:fileupload id="fu" runat="server" /> 
    <asp:button id="submit" runat="server" text="Upload" commandName="INSERT" /> 
</insertTemplate> 
</asp:listview> 

<asp:objectDatasource id="objDS" runat="server" ...> 
<insertParameters> 
    <asp:fileuploadControlParameter controlID="fu" type="string" name="base64" /> 
</insertParameters> 
</asp:objectDatasource> 

ответ

0

Это стало очевидным, я приближалась это неправильный путь, у меня просто расширено управление asp:fileupload, которое позволяет мне связать новое свойство base64 с существующим управлением asp:parameterobjectDatasource.

Public Class fupload 
    Inherits FileUpload 

    Public ReadOnly Property base64 As String 
     Get 
      Return encodeBase64() 
     End Get 
    End Property 

    Public Function encodeBase64() As String 
     Dim iLen As Integer = MyBase.PostedFile.ContentLength 
     Dim btArr As Byte() = New Byte(iLen - 1) {} 
     MyBase.PostedFile.InputStream.Read(btArr, 0, iLen) 
     Dim b64Str As String = String.Format("data:{0};base64,{1}", 
              MyBase.PostedFile.ContentType, 
              Convert.ToBase64String(btArr)) 
     Return b64Str 
    End Function 
End Class 

Пример использования:

<asp:listview runat="server" datasourceID="objDS"> 
<insertTemplate> 
    <asp:fileupload id="fu" runat="server" base64='<%# bind("base64")' /> 
    <asp:button id="submit" runat="server" text="Upload" commandName="INSERT" /> 
</insertTemplate> 
</asp:listview> 

<asp:objectDatasource id="objDS" runat="server" ...> 
<insertParameters> 
    <asp:Parameter type="string" name="base64" /> 
</insertParameters> 
</asp:objectDatasource> 
Смежные вопросы