對於較大的文件,最好使用一些Flash上傳器 - 例如Uploadify或SWFUpload 我更喜歡使用Uploadify。下面是我的項目的例子。 你必須包括uploadify.css和jQuery,swfobject的和jquery.uploadify JavaScript文件和初始化uploadify在你的ASPX頁面:
<link href="uploadify.css" rel="stylesheet" type="text/css" />
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="Scripts/swfobject.js" type="text/javascript"></script>
<script src="Scripts/jquery.uploadify.v2.1.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
// <![CDATA[
$(document).ready(function() {
$('#fileInput').uploadify({
'uploader': 'Scripts/uploadify.swf',
'script': 'Upload.ashx',
'scriptData': {},
'cancelImg': 'Images/cancel.png',
'auto': true,
'multi': true,
'fileDesc': 'PDF files',
'fileExt': '*.pdf',
'queueSizeLimit': 90,
'sizeLimit': 4000000,
'buttonText': 'Browse',
'folder': '/uploads',
'onComplete': function (event, queueID, fileObj, response, data) {
var message = '<div>' + response + '</div>';
var results = $('#uploadResults');
results.html(message + results.html());
},
'onAllComplete': function (event, queueID, fileObj, response, data) {
}
});
});
// ]]></script>
代替ASP:FileUpload控件使用輸入型 - 文件。這裏需要HTML:
<input id="fileInput" name="fileInput" type="file" />
<div id="uploadResults"></div>
然後創建ASHX處理程序將處理您上傳:
public class Upload : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
try
{
HttpPostedFile file = context.Request.Files["Filedata"];
// Validate file for content length, extension etc.
// Store file on server or do what you want with file
// Use context.Response.Write to send messages which will be displayed in <div id="uploadResults"></div>
}
catch (Exception ex)
{
context.Response.Write("Failed to upload file");
}
}
}
嘗試將其更改到'ashx'。 – SLaks 2011-04-05 15:24:40
這是做什麼的? – jocull 2011-04-05 17:28:15
我會嘗試這個,但是它本身並不會讓會話保持活躍狀態。在一些研究中,看起來像我需要在IHttpHandler中實現IRequiresSessionState。稍後將進行更新 – Ron 2011-04-05 18:53:50