การควบคุม FileUpload ไม่บันทึกไฟล์

ฉันกำลังพยายามอัปโหลดไฟล์และไม่สามารถทำงานได้ ฉันมี URL ที่ถูกต้องสำหรับไซต์และโฟลเดอร์ย่อย ฉันได้ลอง fileUploader.FileName และ fileUploader.SaveAs แล้วเช่นกัน ดูเหมือนจะไม่ทำงาน มันไม่ได้อยู่ใน UpdatePanel มีความคิดอะไรบ้าง?

รหัสด้านหลัง:

Protected Sub uploader_click(sender As Object, e As EventArgs) Handles btnUpload.Click
 If fileUploader.HasFile Then
    Dim _path As String = Path.Combine("{path to site and folder}", Server.HtmlEncode(fileUploader.PostedFile.FileName))
    Try
      fileUploader.PostedFile.SaveAs(_path)
    Catch ex As Exception
      Response.Write(ex.ToString)
    End Try
 Else
  Response.Write("No File")
 End If
End Sub 

รหัสใหม่ ฉันจำเป็นต้องได้รับโฟลเดอร์หลักเพื่อแสดงโฟลเดอร์ย่อย:

  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Server.MapPath("~"), "subfolder", filePath)

_path = \\{server blah}\{site}\webroot

ตอนนี้ไม่มีข้อผิดพลาด แต่ไม่มีการอัปโหลดไฟล์เช่นกัน???


person OneFineDay    schedule 28.11.2013    source แหล่งที่มา
comment
กำหนดไม่ทำงาน? ข้อยกเว้น? ไม่มี PostFile เหรอ?   -  person Yuriy Galanter    schedule 28.11.2013
comment
มันไม่ได้พิมพ์อะไรไปที่ Reponse.Write แต่ไม่ได้บันทึกไฟล์   -  person OneFineDay    schedule 28.11.2013
comment
คุณสามารถวางเบรกพอยต์ที่ IF และปฏิบัติตามทีละขั้นตอนเพื่อดูว่าเกิดอะไรขึ้น   -  person Yuriy Galanter    schedule 28.11.2013
comment
ถ้าฉันทดสอบบน localhost ทุกอย่างทำงานได้ดีกับโฟลเดอร์ในเครื่อง   -  person OneFineDay    schedule 28.11.2013
comment
หากทำงานได้ดีบนโฮสต์ภายในเครื่องและไม่ทำงานเมื่อโฮสต์ เหตุผลที่น่าจะเป็นไปได้มากที่สุดก็คือการอนุญาตไฟล์ คลิกขวาที่หน้าเพื่อดูแหล่งที่มาหลังจากส่งไฟล์แล้ว คุณอาจไม่เห็นข้อผิดพลาดที่เขียนโดย response.write เนื่องจากหน้าเว็บมี html จำนวนมากและทั้งหมด   -  person Subin Jacob    schedule 28.11.2013
comment
ตอนนี้ฉันได้รับข้อผิดพลาด Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'. และดูเหมือนว่าเส้นทางควรจะเป็น - อะไรให้   -  person OneFineDay    schedule 28.11.2013


คำตอบ (3)


คุณต้องตั้งค่าการอนุญาตของไฟล์หากคุณเป็นผู้ให้บริการโฮสติ้ง หากคุณใช้โฮสติ้งที่ใช้ร่วมกัน จะมีตัวเลือกให้ทำ หากคุณมีสิทธิ์เข้าถึง IIS คุณก็สามารถทำได้ด้วยตัวเอง

person Subin Jacob    schedule 28.11.2013
comment
ฉันพนันได้เลยว่าไม่ ฉันจะตรวจสอบมัน - person OneFineDay; 28.11.2013
comment
ฉันสามารถเข้าถึง IIS ได้ ฉันต้องทำอย่างไร? - person OneFineDay; 28.11.2013
comment
หากคุณแน่ใจ นี่ไม่ใช่ปัญหา ให้ปิดโหมดข้อผิดพลาดแบบกำหนดเองในการกำหนดค่าเว็บ และดูข้อผิดพลาดหากมี - person Subin Jacob; 28.11.2013
comment
ฉันเปิดใช้งานโฟลเดอร์นี้ใน Directory Browser - มันถูกปิดใช้งาน ไม่มีการเปลี่ยนแปลงหลังจากทำเช่นนี้ - person OneFineDay; 28.11.2013
comment
ไม่แน่ใจว่าคุณหมายถึงอะไรในความคิดเห็นล่าสุดของคุณ ฉันไม่รู้วิธีแก้ไขจุดบกพร่องของไซต์ที่เผยแพร่ localhost ทำงานได้ดี - person OneFineDay; 28.11.2013
comment
ฉันจะตรวจสอบได้อย่างไรว่าเป็น ReadOnly - person OneFineDay; 28.11.2013
comment
คุณให้สิทธิ์แก่ผู้ใช้รายใด คุณต้องให้สิทธิ์แก่ผู้ใช้ IIS การให้สิทธิ์แก่ผู้ใช้รายอื่นนั้นไม่สมเหตุสมผล ลองให้สิทธิ์แก่ผู้ใช้ทุกคนด้วย - person Subin Jacob; 28.11.2013
comment
ฉันไม่เข้าใจวิธีตั้งค่าการอนุญาตของไฟล์ ขออภัยใหม่สำหรับ IIS - person OneFineDay; 28.11.2013
comment
คุณหมายถึงไฟล์นั้นเองเหรอ? - person OneFineDay; 28.11.2013
comment
หากคุณพยายามเข้าถึงไฟล์ ให้ทำดังนี้ จะไม่มีข้อผิดพลาดใดๆ เนื่องจากโค้ดของคุณปลอดภัยภายใน try catch block ลบที่ลองจับและดูข้อผิดพลาด ข้อผิดพลาดจะนำคุณไปสู่ทิศทางที่ถูกต้อง หากไซต์โฮสต์และไม่ใช่ส่วนตัว ให้ลิงก์มา ฉันสามารถตรวจสอบได้ - person Subin Jacob; 28.11.2013
comment
stackoverflow.com/questions/14934006 / - person Subin Jacob; 28.11.2013
comment
คุณต้องตั้งค่าการอนุญาตเป็น IIS IUSERS .. asp.net/mvc/tutorials/deployment/ - person Subin Jacob; 28.11.2013
comment
ใน IIS .Net Roles ถูกปิดใช้งาน และ .Net Users มีข้อผิดพลาดและไม่โหลด - person OneFineDay; 28.11.2013
comment
ตอนนี้ฉันได้รับข้อผิดพลาด Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'. และดูเหมือนว่าเส้นทางควรจะเป็น - อะไรให้ - person OneFineDay; 28.11.2013
comment
ใช้ Server.MapPath("subfolder") ฉันหวังว่าโฟลเดอร์ย่อยจะเป็นเส้นทางเสมือน เช่น. www.yourdomain.com/subfolder - person Subin Jacob; 28.11.2013

แก้ไขบรรทัดที่สามของคุณเช่นนี้

Dim _path As String = Path.Combine(Server.MapPath("{Relative url of your folder within your project}"), Server.HtmlEncode(fileUploader.PostedFile.FileName))

URL ที่เกี่ยวข้องควรมีลักษณะดังนี้:

"~/folder/Folder2//"  

person Madhan Sekar    schedule 28.11.2013
comment
ตอนนี้ฉันได้รับข้อผิดพลาด Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'. และดูเหมือนว่าเส้นทางควรจะเป็น - อะไรให้ - person OneFineDay; 28.11.2013

ในที่สุดก็ใช้งานได้ ต้องมีความล่าช้าระหว่างการเผยแพร่และการใช้ไฟล์ใหม่ - บนระบบคลาวด์ มันทำงานได้ตามที่คาดไว้ด้วยเส้นทางนี้

If fileUploader.HasFile Then
  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Directory.GetParent(Server.MapPath("~")).FullName, "subfolder", filePath)
  Try
    fileUploader.PostedFile.SaveAs(_path)
  Catch ex As Exception
    lb.Text = ex.Message
  End Try
Else
  lb.Text = "No File!"
End If

ขอบคุณสำหรับทุกคนที่ช่วยเหลือ.

person OneFineDay    schedule 28.11.2013