Ajax工具包文件名问题(文件名中的非法字符)



这里有一个奇怪的问题,windows系统不允许在文件名中包含管道(|(符号,而macos允许这样做。现在,当我从mac系统上传文件时,文件名中有管道符号,它会给我带来错误,比如文件名中的非法字符(路径中的非法符号(所以看起来问题是,当我们在windows系统中上传文件时,它不允许管道符号。所以解决了我在上传之前尝试更改文件名的问题,为此我尝试了OnClientUploadStarted函数,但它从来都不是函数。

<aspa:AjaxFileUpload ID="AFUMedia" CssClass="AjaxFileUpload" runat="server" AllowedFileTypes="mpeg,x-zip-compressed,mp3,zip" MaximumNumberOfFiles="10" OnUploadComplete="AFUMedia_UploadComplete" OnClientUploadComplete="uploadComplete" OnClientUploadStarted="uploadstarted" OnClientUploadError="uploadstarted"  Width="523px" UseAbsoluteHandlerPath="false" />

有人能在上传之前告诉我如何更改文件名吗?

异常详细信息

<Exceptions><Exception><Source>mscorlib</Source><ExceptionDetails>System.ArgumentException: Illegal characters in path.     at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)     at System.IO.Path.HasExtension(String path)     at AjaxControlToolkit.AjaxFileUploadHelper.Process(HttpContext context)     at AjaxControlToolkit.AjaxFileUploadHandler.ProcessRequest(HttpContext context)     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)</ExceptionDetails><Message>Illegal characters in path.</Message></Exception></Exceptions>

在上传文件时,必须设置/使用文件名。另存为文件。因此,运行一个例程来清除/清除提供的文件名。在加载之前,您不能更改/设置文件名,但在执行完整的";事件";以及";另存为";文件?您在代码后面的代码中已经有了该时间点的文件名,此时您需要清除给定的由有趣字符组成的文件名字符串。

这样说:

Protected Sub AjaxFileUpload1_UploadComplete(sender As Object, e As AjaxControlToolkit.AjaxFileUploadEventArgs) Handles AjaxFileUpload1.UploadComplete

Debug.Print("start of single file process file = " & e.FileName)
Dim strCleanFile As String = TrimNonAscii(e.FileName)
Dim strPhysicalPath = "some path name " & strCleanFile
AjaxFileUpLoad1.SaveAs(strPhysicalPath)
End Sub

以及修剪功能?可以是这样的:

Public Function TrimNonAscii(ByVal value As String) As String
Dim pattern As String = "[^ -~|]+"
Dim reg_exp As Regex = New Regex(pattern)
Return reg_exp.Replace(value, "")
End Function

所以我去掉了空格,还有一些其他的空格。

对于任何浏览器和任何加载,您都不能弄乱或更改客户端文件名。原因当然是安全。如果你可以打乱/更改客户端的文件名,那么当你在我的网站上观看猫视频时,我会用我的代码加载和选择文件——包括名为密码的Excel表,以及名为"的文件;银行信息";。所以传递的文件名就是你得到的,也是你必须处理的。您不能搞砸,也不能更改提供的文件名——浏览器不允许这样做——正如所指出的,这是出于安全考虑。

考虑到你必须添加路径名,并且通常在文件名中添加附加信息,那么你必须简单地生成你自己的文件名——如果你要使用传递的文件名,那么你非常需要清除它的垃圾,然后使用它。

最新更新