2016-07-29 7 views
0

У меня есть этот рабочий код для загрузки изображений в таблицу MySQL, отлично работает, но я хочу знать, что я могу сделать, чтобы преобразовать эту загрузку одного файла в несколько файлов. Я знаю, что мне нужно, но я точно не знаю, где это должно быть.C# Загрузка нескольких файлов

protected void UploadFile(object sender, EventArgs e) 
{ 
    string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
    string contentType = FileUpload1.PostedFile.ContentType; 
    int alerta = Convert.ToInt32(this.alertatxt.Text); 
    using (Stream fs = FileUpload1.PostedFile.InputStream) 
    { 
     using (BinaryReader br = new BinaryReader(fs)) 
     { 
      byte[] bytes = br.ReadBytes((Int32)fs.Length); 
      string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
      using (MySqlConnection con = new MySqlConnection(constr)) 
      { 
       string query = "INSERT INTO foto(FileName, ContentType, Content, IdAlerta) VALUES (@FileName, @ContentType, @Content, @alerta)"; 
       using (MySqlCommand cmd = new MySqlCommand(query)) 
       { 
        cmd.Connection = con; 
        cmd.Parameters.AddWithValue("@FileName", filename); 
        cmd.Parameters.AddWithValue("@ContentType", contentType); 
        cmd.Parameters.AddWithValue("@Content", bytes); 
        cmd.Parameters.AddWithValue("@alerta", alerta); 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
      } 
     } 
    } 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 

Кроме того, если кто-то может помочь мне, чтобы проверить тип файла загружается на вход до того загружены, например, вход только впускает .png, .jpg и т.д.

EDIT:

Im using .NET Framework 3.5

ответ

0

Итерации через FileUpload1.PostedFiles, для проверки расширения файла используйте path.GetExtension(fileName) или вы можете ограничить тип файла mime файла на iis при загрузке.

Документация:

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.postedfiles.aspx

EDIT: Для рамки .Net ниже 4.5 загрузить файлы через AJAX, а затем на стороне сервера

var fileCollection = Request.Files; 
for (int i = 0; i < fileCollection.Count; i++) 
{ 
HttpPostedFile upload = fileCollection[i]; 
//Do your stuff 
} 

стороне клиента:

function uploadFiles() 
{ 
     var inputElement = document.getElementById("FileUpload1"); 
     var xhr = new XMLHttpRequest(); 
     xhr.onreadystatechange = function() 
     { 
      if (xhr.readyState == 4 && xhr.status == 200 && xhr.responseText) { 
       alert("upload done!"); 
      } 
      else { 
       alert("upload failed!"); 
      } 
     }; 
     xhr.open('POST', "WebForm1.aspx/upload"); 
     xhr.setRequestHeader("Content-type", "multipart/form-data"); 
     xhr.send(inputElement.Files); 
} 

Html:

<form id="form1" runat="server"> 
    <div> 
     <asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true"/> 
    </div> 
     <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="uploadFiles()" /> 
</form> 
+0

Я получаю сообщение об ошибке при попытке использовать PostedFiles, я думаю, что его, потому что я работаю с 3,5 рамки, позвольте мне добавить это к моему вопросу. –

+0

@ F.Flores https://www.microsoft.com/ru-ru/download/details.aspx?id=30653 – mxmissile

+0

Сервер работает только с 3.5 или ниже, и я не могу что-то изменить. –

Смежные вопросы