Jag har gjort en applikation där man kan ladda upp bilder, när jag provkör på min dator funkar det klockrent. När jag nu laddat upp till hotellet och provkör får jag detta fel när jag försöker ladda upp fler filer och även ibland när jag försöker ladda upp enstaka filer. jag har förstått så långt att filen är stängd, men det märkliga är att filerna blir uppladdade! Sökvägarna stämmer men jag har ändrat dom här. jag har fullständiga rättigheter till mapparna. Smart som man är så tänkte ju inte jag på att det var fler filer som gick att ladda upp på en gång. Med andra ord är jag ju tvungen att räkna ihop alla bilder till en för att få storleken, detta gjorde att efter lite ändringar i Web.Config så fungerar det hela fint.fel vid filuppladdning
<b>
Fel vid lagring av filen: d:\BÖRJANPÅSÖKVÄGEN/graphics/Advertise/tempSystem.ObjectDisposedException: Cannot access a closed file. at System.IO.__Error.FileNotOpen()
at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin) at
System.Web.HttpRawUploadedContent.TempFile.GetBytes(Int32 offset, Int32 length, Byte[] buffer,
Int32 bufferOffset) at System.Web.HttpRawUploadedContent.WriteBytes(Int32 offset, Int32 length,
Stream stream) at System.Web.HttpInputStream.WriteTo(Stream s) at
System.Web.HttpPostedFile.SaveAs(String filename) at
upload.btnFinish_Click(Object sender, EventArgs e) in
upload.aspx.cs:line 79
</b>
Så här ser min kod ut:
<code>
protected void btnFinish_Click(object sender, EventArgs e)
{
Pic pic = new Pic();
PicDB picDB = new PicDB();
pic.BaseLocation = "d:\BÖRJANPÅSÖKVÄG/graphics/Advertise/temp\\";
string status = "";
if ((lbPics.Items.Count == 0) && (filesUploaded == 0))
{
lblError.Text = "Fel - Du måste ange en fil att ladda upp.";
return;
}
else
{
foreach(HtmlInputFile HIF in hif)
{
try
{
pic.AdvertisePic = System.IO.Path.GetFileName(HIF.PostedFile.FileName);
HIF.PostedFile.SaveAs(pic.BaseLocation + pic.AdvertisePic); // HÄR ÄR DET DET ÄR FEL...
filesUploaded++;
pic.UserSession = Session.SessionID.ToString();
//pic.AdvertisePic = fn.ToString();
try
{
picDB.addTempPic(pic);
status += pic.AdvertisePic + "<br>";
lblError.Text = "";
//pnlPictures.Enabled = false;
if(filesUploaded == hif.Count)
{
lblError.Text = "Dessa " + filesUploaded + " filer blev "
+ "uppladdade:<br>" + status;
}
}
catch (Exception ex)
{
ex.Message.ToString();
DirectoryInfo myDirectory = new DirectoryInfo(pic.BaseLocation);
FileInfo myFile = new FileInfo(pic.BaseLocation + pic.AdvertisePic);
myFile.Delete();
lblError.Text = "Fel - Det uppstod ett fel<br />" + ex.Message.ToString();
}
}
catch(Exception err)
{
lblError.Text = "Fel vid lagring av filen: " + pic.BaseLocation
+ "<br>" + err.ToString();
}
}
hif.Clear();
lbPics.Items.Clear();
}
}
</code>
En annan sak med koden. Vissta ska det bli så nu att om filen inte blir sparad så ska inget sparas i databasen heller och tvärtom väl?Sv: fel vid filuppladdning
<code>
httpRuntime executionTimeout="90"
maxRequestLength="20000"
useFullyQualifiedRedirectUrl="false"
requestLengthDiskThreshold="8192"/>
</code>