Jag har gjort ett formulär för att ladda upp bilder på en FTP-server. Problemet är att det inte går att titta på bilderna som hamnar där, nåt är galet så de förstörs på vägen eller nåt.... Någon som testat något liknande så ni kan identifiera felet?
View
Controller
Model
View
Kod:
@using (Html.BeginForm("UploadPicture", "Editor", FormMethod.Post, new { id = "SendFileForm", enctype = "multipart/form-data" }))
{
<ul>
@Html.HiddenFor(x => Model.GalleryName)
@Html.HiddenFor(x => Model.GalleryID)
@Html.HiddenFor(x => Model.GalleryName)
<li>Bildens namn:
<input type="text" id="name" name="name" />
</li>
<li>Bildens text:
<input type="text" id="text" name="text" />
</li>
<li>Välj bild
<input type="file" id="File1" name="File1" runat="server" />
</li>
</ul>
<input type="submit" id="submit" name="submit" value="Ladda upp" runat="server" />
}
Controller
Kod:
[HttpPost]
public ActionResult UploadPicture(Gallery gallery, string name, string text)
{
if (Request.Files.Count == 0)
{
return RedirectToAction("Galleries");
// TODO: Add error message
}
else
{
HttpPostedFileBase SourceFile = Request.Files[0];
Context.UploadPicture(SourceFile, gallery.GalleryID, name, text);
return RedirectToAction("Galleries");
}
}
Model
Kod:
public static void UploadPicture(HttpPostedFileBase file, int galleryID, string name, string text)
{
using (StreamReader StreamReader = new StreamReader(file.InputStream))
{
const string ftpAddress = "xxx.xx.xx.xx";
const string username = "xxxxxxxxxxx";
const string password = "xxxxxxxxxxx";
const string folder = "xxxxxxxx.xx/xxxxxxx/";
string fileURL = "ftp://" + ftpAddress + "/" + folder + "/" + file.FileName;
byte[] buffer = new byte[999999]; //file.ContentLength fungerar inte heller
WebRequest request = WebRequest.Create(fileURL);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
#region InsertPictureIntoDatabase
#endregion
}
}