I am developing a web-part (a form basically) with the following functions:
- Generate a
SPListItemwith info taken fromtextboxes(i.e save data in a database table). - Generate a folder using the
IDof generatedSPListItemobtained in previous step (in a separate library). - Select image with
FileUploadcontrol and save it in the generated folder (step 2). Press button
Savefor call Click event which contains the following code:/// <summary> /// Button Click event. /// </summary> protected void btnSaveData_Click(object sender, EventArgs e) { try { using (SPSite _site = new SPSite(SPContext.Current.Site.Url)) { using (SPWeb _web = _site.OpenWeb(SPContext.Current.Web.ServerRelativeUrl)) { //Library who contains the folders (included the new folder to generate). SPList listaImagenes = _web.Lists["FolderLibrary"]; //It's just an example. //_folder. SPFolder _folder = null; #region Step N. save image in generated folder. try { if (_folder != null) { if (FileUpload1.HasFile) { _folder.Files.Add(FileUpload1.FileName, FileUpload1.FileBytes); _folder.Update(); } else { lblMsg.Text += "<b>There's no file selected</b> <br/>"; } } else { lblMsg.Text += "La _folder es NULL. <br/>"; } //Save changes. _folder.Update(); } catch (Exception ex) { lblMsg.Text += "Error. " + ex.Message + "<br/>"; } #endregion } } } catch (Exception ex) { lblMsg.Text += "Error: " + ex.Message + " <br/> Stacktrace: " + ex.StackTrace; } }
The first two steps are complete, however, after pressing the button Save, the code checks if the FileUpload control has a file (i.e. FileUpload1.HasFile()) which is always false.
I already check another questions about FileUpload control for save images in SharePoint in the provided code in most of those questions the shared code doesn't show if they use Session variables or another way of keep the selected file in FileUpload control.
So my full question is:
How can keep the selected image and use it for add it in folder programmatically?
EDIT:
The Web-Part is a Sanboxed solution and the FileUpload control isn't in a UpdatePanel control.