2011-08-24 8 views
1

Je dispose de ModalPopUpExtenders sur mon site où les administrateurs peuvent télécharger des vidéos, des documents, des images et des images vers un produit spécifique. Le téléchargement semble très bien fonctionner, il apparaît dans la base de données et sur le site ..... mais quand je clique sur le lien sur la page, il dit "La ressource que vous cherchez a peut-être été supprimée, son nom a été changé ou est temporairement indisponible. "Où vont mes vidéos?

Rien n'est téléchargé dans le dossier de téléchargement réel qui fait partie de mon site ASP.net 4.0 VB. Quelqu'un peut-il me dire ce qui se passe?

<li> 
    <asp:LinkButton ID="DocumentButton" runat="server">Document</asp:LinkButton> 
    <asp:Panel ID="DocumentPanel" runat="server" CssClass="modalPopup" Style="display:none"> 
     Title:<asp:TextBox ID="DocumentTitle" runat="server"></asp:TextBox> 
     <asp:FileUpload ID="DocumentUpload" runat="server" /> 
       <asp:Button ID="SubmitDocument" runat="server" Text="Upload" onclick="SubmitDocument_Click" /><asp:Button ID="CancelDocument" runat="server" Text="Cancel" /><asp:HiddenField ID="filename" runat="server" /> 
      </asp:Panel>  
      <asp:ModalPopupExtender ID="DocumentModal" runat="server" DropShadow="True" DynamicServicePath="" Enabled="True" PopupControlID="DocumentPanel" TargetControlID="DocumentButton"></asp:ModalPopupExtender> 
</li>  

    Protected Sub SubmitDocument_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SubmitDocument.Click 
    DocumentModal.Hide() 
    'Builds the full absolute URL to be inserted into the database. 
    Dim hostURL As String = Request.Url.Scheme & "://" & Request.Url.Host & ":" & Request.Url.Port & Request.ApplicationPath 
    Dim sqlFileHREF As String = "INSERT INTO Marketing (ProductID, MarketingTypeID, MarketingTitle, MarketingData) VALUES (" & ProductID.Value & " ,4, '" & DocumentTitle.Text & "', '" & hostURL & "uploads/" & ProductID.Value & "/" & DocumentUpload.FileName & "')" 
    sqlFileHREF.Replace("'", "''") 
    If DocumentUpload.HasFile Then 
     Try 
      DocumentUpload.SaveAs("uploads" & _ 
       DocumentUpload.FileName) 
      DocumentLabel.Text = "File name: " & _ 
       DocumentUpload.PostedFile.FileName & "<br>" & _ 
       "File Size: " & _ 
       DocumentUpload.PostedFile.ContentLength & " kb<br>" & _ 
       "Content type: " & _ 
       DocumentUpload.PostedFile.ContentType 
     Catch ex As Exception 
      DocumentLabel.Text = "ERROR: " & ex.Message.ToString() 
     End Try 
    Else 
     DocumentLabel.Text = "You have not specified a file." 
    End If 

    'Create SQL Connection 
    Dim SqlConnection As New SqlConnection("Server=off-db1;uid=productsDB_admin;pwd=******;database=Products") 
    SqlConnection.Open() 
    Dim sqlCommand As New SqlCommand(sqlFileHREF, SqlConnection) 
    sqlCommand.ExecuteNonQuery() 
    SqlConnection.Close() 
    Response.Redirect(Request.RawUrl) 
End Sub 

Répondre

2

Vous devez spécifier où enregistrer le fichier:

DocumentUpload.PostedFile.SaveAs(Server.MapPath("/path/" & DocumentUpload.PostedFile.FileName)) 

Où Server.MapPath tracera un chemin virtuel à un chemin physique, qui est ce que .SaveAs exige.

+0

J'ai remplacé la première déclaration de l'instruction Try to the, mais elle me donne toujours une erreur 404. Lorsque je survole les éléments de la liste, il semble qu'ils aient été enregistrés dans un dossier, mais ils ne sont toujours pas sauvegardés. – jlg

+0

Mon erreur, j'ai retiré tout ce try/catch et j'utilise juste le code que vous avez tapé. J'ai remplacé/path/avec/uploads/et cela a fonctionné. Je peux voir le document dans mon Explorateur de solutions, sauf que mon site veut tirer du dossier individuel de ce produit. Devrai-je créer des dossiers pour les téléchargements de chaque produit ou puis-je écrire quelque chose pour que cette application génère un dossier pour chaque produit. Il y a 519 produits en ce moment – jlg

+0

Oh et merci d'ailleurs! Je ne sais pas combien de temps il m'aurait fallu pour trouver une réponse sur Google :) – jlg

1

Vous n'avez pas indiqué au serveur où enregistrer le fichier. Reportez-vous à la visite MSDN pour des exemples de code spécifiques: http://msdn.microsoft.com/en-us/library/aa479405.aspx.

+0

Est-ce que cela importe où j'ai mis le code? Je l'ai essayé et ça n'a toujours pas marché. Je sais que parfois les choses doivent être traitées. Veuillez vérifier les modifications pour voir ce que j'ai fait. – jlg

0

Si aucun chemin n'est spécifié, ils sont probablement dans C: \ Windows \ System32.

+0

Je ne les ai pas trouvées là-dedans. :( – jlg

Questions connexes