微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决文件名的 Ajax 工具包问题文件名中的非法字符

这里有一些奇怪的问题,Windows 系统不允许在文件名中包含管道 (|) 符号,而 mac os 允许这样做。现在,当我从 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

所以我去掉了空格和其他一些具有该功能的空间。

您永远不能弄乱或更改客户端文件名 - 对于任何浏览器和任何上传。原因当然是安全。如果您可以弄乱/更改客户端文件名,那么当您在我的网站上查看 cat 视频时,我将使用我的代码上传和选择文件 - 包括称为密码的 Excel 表格,以及称为“银行信息”的文件.所以传递的文件名就是你得到的,也是你必须处理的。您不能弄乱,也不能更改提供的文件名 - 浏览器不允许这样做 - 如前所述,这是出于安全原因。

鉴于您必须添加路径名,并且通常在该文件名中添加附加信息,那么您必须简单地生成自己的文件名 - 如果您要使用传递的文件名,那么您非常需要清理它从垃圾中取出,然后使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。