Avatar billede sitecoredk Nybegynder
28. december 2011 - 04:11 Der er 4 kommentarer og
1 løsning

Upload af fil til Surftown webhotel via ASP.NET MVC 3, Razor

Jeg har forsøgt at lave en upload funktion til min hjemmeside, liggende hos surftown via ASP.NET MVC 3, Razor. Det er ikke helt ligetil.

Jeg har forsøgt mig an med mange forskellige fremgangsmåder, alt sammen uden resultat. Det pudsige er at funktionen virker udmærket på localhost, men når jeg oploader det til surftowns webhotel, så virker det bare ikke.

Surftown har selv lagt noget eksempelkode ud, men denne gælder kun for asp.net ikke mvc.

Såfremt der er nogen der har lavet en upload funktion til asp.net mvc 3 razor, så må i gerne hjælpe til.

Tak.
Avatar billede arne_v Ekspert
28. december 2011 - 04:22 #1
Du kan naturligvos haabe at nogen har lavt ASP.NET MVC file upload paa Surftown.

Men du vil udvide maalgruppen ganske betragteligt ved at vise lidt kode og lidt fejlmeddelelser saa alle (ASP.NET MVC) udviklere har mulighed for at bidrage.
Avatar billede sitecoredk Nybegynder
28. december 2011 - 04:40 #2
Naturligvis!
Jeg har bevidst valgt at undlade at angive noget kode, for at undgå at folk udelukkende forholder sig til denne (da den jo ikke virker).

Mit view

@using (Html.BeginForm("Edit", "StoreManager", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="editor-field">
<input type="file" name="file" />
@Html.ValidationMessageFor(model => model.Thumbnail)
</div>

<input type="submit" value="Save" />


----------------
Min controller

public static char DirSeparator = System.IO.Path.DirectorySeparatorChar;

public static string FilesPath = HostingEnvironment.MapPath("~/Content/Uploads");

        public static string UploadFile(HttpPostedFileBase file)
        {
            if (null == file) return "";
            if (!(file.ContentLength > 0)) return "";

            string fileName = Path.GetFileName(file.FileName);
            string fileExt = Path.GetExtension(file.FileName);

            if (null == fileExt) return "";

            if (!Directory.Exists(FilesPath))
            {
                Directory.CreateDirectory(FilesPath);
            }

            string path = FilesPath + DirSeparator + fileName;

            file.SaveAs(Path.GetFullPath(path));
   
            return fileName;
        }

Jeg har valgt kun at angive relevant kode, da koden er omfattende.
Avatar billede arne_v Ekspert
30. december 2011 - 04:20 #3
Og hvilken fejl faar du?
Avatar billede mjdigital Nybegynder
10. januar 2012 - 11:00 #4
sitecoredk har haft PRÆCIS samme problem som dig ;) Min løsning er simpel. Du er nødtil at gøre brug af impersonateUser før at få de rigtige rettigheder, lidt læse stuff her.
http://www.wintask.com/onlinehelp/Language/ImpersonateUser.htm

Min løsning vil se ud som danne..

ImpersonateUser iu = new ImpersonateUser();
            iu.Impersonate("SURFTOWNSERVER", "brugernavn", "adgangskode");

HER SKRIVER DU SÅ DIT UPLOAD SCRIPT

iu.Undo();


Sådan her ser mit f.eks. ud


ImpersonateUser iu = new ImpersonateUser();
            iu.Impersonate("wsw33.surftown.dk", "****", "****");
       
            tempPath = " ~/user/upload/" + UserID + "/gallery";

            savepath = context.Server.MapPath(tempPath);
            var filename = postedFile.FileName;
            if (!Directory.Exists(savepath))
                Directory.CreateDirectory(savepath);
   
           
            postedFile.SaveAs(savepath + @"\" + guid + Path.GetExtension(filename));

            iu.Undo();
Avatar billede mjdigital Nybegynder
10. januar 2012 - 11:00 #5
Og svar hvis mit hjalp dig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester