2017-06-29 59 views
0

我有一个上传文件到服务器的问题。上传时ASP.NET文件被破坏

在我的网页我有三个不同的文件上传Web控件从我挑选的文件。要保存服务器上的文件,我正在使用FileUpload.PostedFile.SaveAs()方法。

如果我上传约200 KB或更小的文件一切正常,但是当我上传更大的东西,像10MB,它们的长度变化,当我下载它,它不再使用。

例如,当我上传一个40KB的HTML文件,200KB pdf文件和一个10MB的MP3文件的MP3文件被截断,并成为200KB长。经过一些调试后,我不确定发生了什么,因为在使用SaveAs()方法之前,文件大小已经改变。

我已经更改web.config文件中的maxRequestLengthmaxAllowedContentLength值。 这是我上传文件的代码:

string htmlFilename = ""; 
string pdfFilename = ""; 
string audioFilename = ""; 
string folder= ""; 

if (uploadHtml.PostedFile != null && uploadHtml.PostedFile.ContentLength > 0) 
    htmlFilename = Path.GetFileName(uploadHtml.PostedFile.FileName); 
if (uploadPDF.PostedFile != null && uploadPDF.PostedFile.ContentLength > 0) 
    pdfFilename = Path.GetFileName(uploadPDF.PostedFile.FileName); 
if (uploadAudio.PostedFile != null && uploadAudio.PostedFile.ContentLength > 0) 
    audioFilename = Path.GetFileName(uploadAudio.PostedFile.FileName); 

if (htmlFilename != "" || pdfFilename != "" || audioFilename != "") 
{ 
    folder= Server.MapPath("Data/" + txtTitoloStudio.Text); 
    if (!Directory.Exists(cartella)) 
    { 
     Directory.CreateDirectory(cartella); 
    } 
if (htmlFilename != "") 
{ 
    string htmlSaveLocation = cartella + "/" + htmlFilename; 
    uploadHtml.PostedFile.SaveAs(htmlSaveLocation); 
} 
if (pdfFilename != "") 
{ 
    string pdfSaveLocation = cartella + "/" + pdfFilename; 
    uploadPDF.PostedFile.SaveAs(pdfSaveLocation); 
} 
if (audioFilename != "") 
{ 
    string audioSaveLocation = cartella + "/" + audioFilename; 
    uploadPDF.PostedFile.SaveAs(audioSaveLocation); 
} 

我怎样才能解决这个问题? FileUpload是否有最大尺寸限制? 谢谢你的帮助。

+0

貌似上传犯规让超过200MB大。这可以帮助你上传大文件:https://blogs.msdn.microsoft.com/shashankyerramilli/2014/02/14/upload-files-to-blob-storage-using-azure-power-shell/ – kristech

+0

谢谢非常感谢您的回复。我不知道Azure,我希望能找到一种方法来存储和检索数据,而无需使用复杂的解决方案。这是一个学校项目,我没有太多时间去探讨新的话题。 –

+0

尝试查看保存和下载文件的保管箱API。我以前使用过这个,并且不需要太多时间来弄清楚。 – kristech

回答

0

我很抱歉,我发现我错了。我指定了上传音频文件的错误文件上传器。所以我的代码做的是选择PDF文件,给它的音频文件的名称和扩展名,并将其存储为一个MP3文件。我更改了文件上传器的名称,现在它可以工作。感谢您的建议!