ASP.NET, C #, IIS, MIME TYPES, FILE UPLOAD CONDITIONAL

Usually I do not work in .NET or C # or anything on a Microsoft server. I am usually a LINUX LAMP developer, so please tell me about me.

Basically, I have a web file upload form on a website, and it should only accept certain formats (or MIME types) ...

The following code works PERFECTLY, EXCEPT, it does not upload DOCX files to the server! This is the only type of file that does not work ... I double checked every line of code and even ended up in IIS Manager to ensure that the DIMM MIME types were inherited and they were ...

Does anyone know why DOCX files will not be uploaded to the server, like every other type of file?

Code snippet:

string savePath = "D:\\HIDDEN PATH HERE"; string fileMsg; // Before attempting to perform operations // on the file, verify that the FileUpload // control contains a file. if (FileUpload1.HasFile) { // Check to see that the content type is proper and allowed. // DOC: application/doc, appl/text, application/vnd.msword, application/vnd.ms-word, application/winword, application/word, application/x-msw6, application/x-msword if ( FileUpload1.PostedFile.ContentType == "text/rtf" || FileUpload1.PostedFile.ContentType == "application/doc" || FileUpload1.PostedFile.ContentType == "appl/text" || FileUpload1.PostedFile.ContentType == "application/vnd.msword" || FileUpload1.PostedFile.ContentType == "application/vnd.ms-word" || FileUpload1.PostedFile.ContentType == "application/winword" || FileUpload1.PostedFile.ContentType == "application/word" || FileUpload1.PostedFile.ContentType == "application/msword" || FileUpload1.PostedFile.ContentType == "application/x-msw6" || FileUpload1.PostedFile.ContentType == "application/x-msword" || FileUpload1.PostedFile.ContentType == "application/pdf" || FileUpload1.PostedFile.ContentType == "application/x-pdf" || FileUpload1.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" || FileUpload1.PostedFile.ContentType == "application/vnd.openxmlformats-officedocument.wordprocessingml.template" ) { // Get the name of the file to upload. String fileName = FileUpload1.FileName; // Append the name of the file to upload to the path. savePath += strnow + fileName; // Call the SaveAs method to save the // uploaded file to the specified path. // This example does not perform all // the necessary error checking. // If a file with the same name // already exists in the specified path, // the uploaded file overwrites it. FileUpload1.SaveAs(savePath); // Notify the user of the name of the file // was saved under. //fileMsg = "Your file was saved as " + fileName; fileMsg = ""; } else { fileMsg = "Your file was not an accepted format. Please use PDF, RTF or DOC formats."; } 
+7
source share
2 answers

See this answer that points to this page .

Mime DOCX Type:

 application/vnd.openxmlformats-officedocument.wordprocessingml.document 

EDIT: Sorry, did not see it on the list. If you want to enable DOCX, why not just check the ".docx" extension as an extension.

 || FileUpload1.PostedFile.FileName.ToLower().Substring(FileUpload1.PostedFile.FileName.Length - 4) == "docx" 
+2
source

You should read the extension, not check the mime types. MIME types are set by the browser and may vary between computers. This is not their goal.

In addition, no matter what background you came from, if you have such an if statement, you should feel at least the slightest shame.

 string[] acceptedExtensions = new string[] { ".docx", ".doc", ".txt", ".etc" }; // snip if(acceptedExtensions.Contains(Path.GetExtension(FileUpload1.PostedFile.Filename))) { AcceptFile(FileUpload1.PostedFile); } 
+1
source

All Articles