问题描述
我们的Intranet上有一个问题跟踪系统,需要在其中添加受影响的文件,包括文件的路径。
我们一直在使用asp.net FileUpload控件,并使用FileUpload1.PostedFile.FileName获取用户选择并上传的文件的路径。这些文件通常不在用户本地计算机上,而是在与问题跟踪系统不同的服务器上的网络驱动器上。我们将上传用作将文件添加到问题跟踪器的简便方法。
出于安全原因,这在任何最新的浏览器中均不起作用,仅在即将淘汰的Internet Explorer上有效。
有什么办法可以使它正常工作吗?至少对于Intranet网站?还是有更好的方法来解决这个问题?我们确实确实需要文件路径,并且如果我们必须复制和粘贴它,则此过程将花费更长的时间,因为这将使其分为两个步骤,并且经常需要添加许多文件。
<asp:FileUpload ID="FileUpload1" runat="server" />
Dim sFileLocation As String = ""
Dim sFileName As String = ""
Dim sExtension As String = ""
sFileName = GetFileName(Me.FileUpload1.FileName)
sExtension = GetExtension(Me.FileUpload1.FileName)
sFileLocation = Me.FileUpload1.PostedFile.FileName
sFileLocation = sFileLocation.Replace(sFileName,"")
解决方法
这仅适用于IE 11,未测试IE edge。 Chrome无法正常运行。 由于有Intranet,我们只允许在内部使用IE。
这是我用来检查文件大小和名称的逻辑,validateFile函数可以毫无问题地获取文件路径
<asp:FileUpload ID="fuAFS" runat="server" CssClass="cssAFS cssFu" AllowMultiple="false" Width="550px" /> <asp:Button ID="btnAFS" runat="server" Text="Upload AFS" OnClientClick="return ValidateFile('cssAFS');" />
function ValidateFile(cssName) {
var fu = $('.' + cssName);
//Empty upload control file.length == 1
if (fu.length > 0) { //Upload control exists
var pathName = fu.val();
if (pathName == '') {
alert('Missing file. Please click the Browse button to select a file with extension pdf.');
return false;
}
}
return true;
}
$('.cssFu').on('change',function (e) {
var maxFileSize = $('#<%=hdnMaxFileSize.ClientID%>').val();
if (e.target.files.length == 1) {
if (e.target.files[0] != null) {
var size = e.target.files[0].size; //IE
var fileSize = e.target.files[0].fileSize; //Firefox
var pathName = $(this).val();
var ext = pathName.substring(pathName.lastIndexOf(".") + 1,pathName.length).toLowerCase();
if (size > maxFileSize * 1024 * 1024 || fileSize > maxFileSize * 1024 * 1024) {
alert('File size exceeds limit. Maximum file size permitted is ' + maxFileSize + ' MB.');
$(this).val('');
// Prevent form Upload
e.stopPropagation();
e.preventDefault();
} else if (ext != 'pdf') {
alert('Invalid File. Please upload a File with extension: PDF');
$(this).val('');
// Prevent form Upload
e.stopPropagation();
e.preventDefault();
}
var fileName = pathName.substring(pathName.lastIndexOf("\\") + 1,pathName.length);
if (fileName != '' && fileName.length > 100) {
alert('File name length over 100 characters,please rename the file and upload again.');
$(this).val('');
// Prevent form Upload
e.stopPropagation();
e.preventDefault();
}
}
}
,
@rgorr-出于安全原因,FileUpload永远不会为您提供完整路径。
Server.MapPath(FileUpload1.FileName);