我正在尝试上传多个文件并同时将它们转换为for .html
格式。多个文件上传完成并存储到“已上传”文件中,但只有第一个文件转换为.htm
格式,而不是全部。
这是我的代码:
protected void btnUpload_Click(object sender, EventArgs e)
{
HttpFileCollection fileCollection = Request.Files;
//Code to check if user has selected any file on the form
if (!(fUpload1.HasFile))
{
lblMessage1.Text = "Please choose file to upload";
}
else
{
for (int i = 0; i < fileCollection.Count; i++)
{
try
{
HttpPostedFile uploadfile = fileCollection[i];
string fileName = System.IO.Path.GetFileName(uploadfile.FileName);
//To check the file extension if it is word document or something else
//string strFileName = fUpload1.FileName;
string[] strSep = fileName.Split('.');
int arrLength = strSep.Length - 1;
string strExt = strSep[arrLength].ToString().ToUpper();
//Save the uploaded file to the folder
strPathToUpload = Server.MapPath("Uploaded2");
//Map-path to the folder where html to be saved
strPathToConvert = Server.MapPath("Aadi2");
object FileName = strPathToUpload + "\\" + fileName;
object FileToSave = strPathToConvert + "\\" + fileName + ".htm";
if (strExt.ToUpper().Equals("DOC") | strExt.ToUpper().Equals("DOCX"))
{
uploadfile.SaveAs(strPathToUpload + "\\" + fileName);
lblMessage1.Text = "File uploaded successfully";
//open the file internally in word. In the method all the parameters should be passed by object reference
objWord.Documents.Open(ref FileName, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing, ref missing);
//Do the background activity
objWord.Visible = false;
Microsoft.Office.Interop.Word.Document oDoc = objWord.ActiveDocument;
oDoc.SaveAs(ref FileToSave, ref fltDocFormat, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
lblMessage1.Text = fileName + " done";
}
else if (strExt.ToUpper().Equals("JPG"))
{
strPathToUpload = Server.MapPath("images");
uploadfile.SaveAs(strPathToUpload + "\\" + fUpload1.FileName);
lblMessage1.Text = "logo uploaded successfully";
}
else if (strExt.ToUpper().Equals("TXT"))
{
strPathToUpload = Server.MapPath("name");
fUpload1.SaveAs(strPathToUpload + "\\" + fUpload1.FileName);
lblMessage1.Text = "Website name uploaded successfully";
}
else if (strExt.ToUpper().Equals("MP4"))
{
strPathToUpload = Server.MapPath("video");
fUpload1.SaveAs(strPathToUpload + "\\" + fUpload1.FileName);
lblMessage1.Text = "Video uploaded successfully";
}
else
{
lblMessage1.Text = "Invalid file selected!";
}
//Close/quit word
objWord.Quit(ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
}
答案 0 :(得分:0)
您无法使用asp.net中的一个文件上传控件上传多个文件。
点击此处查看解决方案:asp.net multiple uploads with multiple fileupload control 和http://www.dotnetcurry.com/ShowArticle.aspx?ID=68
或要上传多个文件,您可以在客户端生成多个上传控件或创建用户定义的控件。
答案 1 :(得分:0)
您正在使用Interop转换DOC文件 - 即according to Microsoft NOT SUPPORTED in ASP.NET etc.!
您可以使用其他库,例如OpenXML from Microsoft(免费)或Aspose.Words(商业),这些库不依赖于Office,并且完全支持像您这样的服务器方案。
答案 2 :(得分:0)
如果目录中存在上传文件,则使用Directory.GetFiles而不是使用httpfilecollection。它将从您的案例中返回特定文件* .doc文件,然后将其转换为.html。
string[] filePaths = Directory.GetFiles(@"d:\files\", "*.doc");