2013-10-13, 23:29
  #1
Medlem
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
Citera
2013-10-14, 01:28
  #2
Bannlyst
Vilket språk är det där skrivet i?
Citera
2013-10-14, 15:30
  #3
Medlem
Citat:
Ursprungligen postat av nopathy
Vilket språk är det där skrivet i?

C# och HTML med Razor.
__________________
Senast redigerad av poussard 2013-10-14 kl. 15:31. Anledning: Utökade svaret.
Citera
2013-10-14, 17:29
  #4
Medlem
Sätt byte[] buffer = null; istället för byte[999999]
Skulle tippa på att felet ligger där då den får en fixed length och antagligen innehåller skräpdata för att fylla ut.
Citera
2013-10-14, 17:58
  #5
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av erkki17
Sätt byte[] buffer = null; istället för byte[999999]
Skulle tippa på att felet ligger där då den får en fixed length och antagligen innehåller skräpdata för att fylla ut.
Det kommer garanterat inte funka, lär bli en NullReferenceException på raden reqStream.Write(buffer, 0, buffer.Length); i Model.

TS: Du gör ju aldrig något med din HttpPostedFileBase eller StreamReader. Din buffer är tom, eftersom allt du egentligen gör i koden (förutom själva uppladdningen) är att instansiera en 999999 byte stor array (fylld med 0-bytes) och laddar upp den. Testa att kasta bort din StreamReader och dess using-block helt och gör nåt i den här stilen för att dunka ner din fil till byte-arrayen:
Kod:
byte[] buffer = new byte[file.ContentLength];
file.InputStream.Read(buffer0buffer.Length);
// Nu borde buffer innehålla fildatat.

//WebRequest.Create() osv....

// Sen skriver du ut den till requeststreamen som vanligt:
Stream reqStream request.GetRequestStream();
reqStream.Write(buffer0buffer.Length); 
Citera
2013-10-14, 20:01
  #6
Medlem
Citat:
Ursprungligen postat av gadzoox
Det kommer garanterat inte funka, lär bli en NullReferenceException på raden reqStream.Write(buffer, 0, buffer.Length); i Model.

TS: Du gör ju aldrig något med din HttpPostedFileBase eller StreamReader. Din buffer är tom, eftersom allt du egentligen gör i koden (förutom själva uppladdningen) är att instansiera en 999999 byte stor array (fylld med 0-bytes) och laddar upp den. Testa att kasta bort din StreamReader och dess using-block helt och gör nåt i den här stilen för att dunka ner din fil till byte-arrayen:
Kod:
byte[] buffer = new byte[file.ContentLength];
file.InputStream.Read(buffer0buffer.Length);
// Nu borde buffer innehålla fildatat.

//WebRequest.Create() osv....

// Sen skriver du ut den till requeststreamen som vanligt:
Stream reqStream request.GetRequestStream();
reqStream.Write(buffer0buffer.Length); 
Fick för mig att han skulle plocka över HttpPostedFileBase.InputStream till buffer. Läste inte tillräckligt noga tydligen
Man kan ju använda MemoryStream som man tilldelar InputStream och sedan sätter buffer till MemoryStream.ToArray()
Citera
2013-10-14, 20:50
  #7
Medlem
Citat:
Ursprungligen postat av gadzoox
TS: Du gör ju aldrig något med din HttpPostedFileBase eller StreamReader. Din buffer är tom, eftersom allt du egentligen gör i koden (förutom själva uppladdningen) är att instansiera en 999999 byte stor array (fylld med 0-bytes) och laddar upp den. Testa att kasta bort din StreamReader och dess using-block helt och gör nåt i den här stilen för att dunka ner din fil till byte-arrayen:

Tack, det fungerar klockrent!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in