1. 程式人生 > >ASP.net實現上傳APK檔案並且下載APK

ASP.net實現上傳APK檔案並且下載APK

前言:文中所講僅為個人學習使用過程中的一些經驗和想法,望多提意見。

一,實現上傳APK檔案的功能

介面cs.html程式碼:

<strong>  </strong><span style="font-weight: bold; white-space: pre;">	</span>@*enctype= "multipart/form-data"是必需有的,否則action接收不到相應的file*@
        @using (Html.BeginForm("AddVersion", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
        { 
            <label>VerName:</label>
            @Html.TextBox("VerName", "", new { style="width:100%;"});
            <br/>
            <label>VerCode:</label>
           @Html.TextBox("VerCode", "", new { style = "width:100%;"});
            <br/>
             <label>DownLoadUrl:</label>
            @Html.TextBox("DownLoadUrl", "", new { style = "width:100%;"});
            <br/>
             <label>DesCription:</label>
            @Html.TextBox("DesCription", "", new { style="width:100%;"});
            <br/>
            <span>檔案上傳</span>
            <br>
            <input type="file" name ="file" />
            <br/>
            <input type="submit" value="提交"/>
            
        }
controller中的程式碼:
 <span style="white-space:pre">	</span>if (file == null)
            {
                return Content("沒有檔案!", "text/plain");
            }
            var fileName = Path.Combine(Request.MapPath("~/Upload/App"), Path.GetFileName(file.FileName));
            try
            {
                file.SaveAs(fileName);
                //tm.AttachmentPath = fileName;//得到全部model資訊
                ///tm.AttachmentPath = "../upload/" + Path.GetFileName(file.FileName);
                //return Content("上傳成功!", "text/plain");
            //    return RedirectToAction("Show", tm);
                return RedirectToAction("EditVersion");
            }
            catch
            {
                return Content("上傳異常 !", "text/plain");
            }
這樣就可以實現檔案的上傳功能,沒有使用JQuery,相對容易點。

(注:在這裡上傳檔案有個問題,就是asp.net預設的最大上傳檔案是4M,執行超時為90s。解決這個問題我的方法是:修改web.config檔案改預設值,新增這樣一段程式碼:

<configuration>       
        <system.web>       
                    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
        </system.web>       
 <configuration>  

更多解決辦法可見:http://www.cnblogs.com/akwwl/p/3573666.html

二,實現APK檔案的下載

在ASP.net中直接把.apk檔案放到/Upload/App路徑下,然後釋出完了以後,通過http://xxx/Upload/App/xx.apk是訪問不了的。解決思路:將asp.net mvc路由忽略.apk檔案請求URL對映

具體方法:

在web.config中:

<configuration>
  <configSections>
    ...
    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" /><!--加入此行-->
  </configSections>
 ...
  <system.web>
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" /><!--加入此行-->
    
    </httpModules>
  ...
 </system.web>
  
</configuration>
在App_Start/RouteConfig.cs檔案中
public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{resource}.apk");// 加入此行
    
            ...
         }
      }
在IIS中配置MIME檔案對映



執行->inetmgr


點確定



點中間的:MIME型別

輸入需要配置的引數就可以了