我用过这个:
$('input[type=file]').val()
Run Code Online (Sandbox Code Playgroud)
获取文件名,但它返回完整路径,如"C:\ fakepath\filename.doc"."fakepath"部分实际上就在那里 - 不确定它是否应该是,但这是我第一次使用文件上传的文件名.
我怎样才能获得文件名(filename.doc)?
在Java中,给定a java.net.URL
或a String
形式http://www.example.com/some/path/to/a/file.xml
,获取文件名的最简单方法是什么,减去扩展名?所以,在这个例子中,我正在寻找返回的东西"file"
.
我可以想到几种方法来做到这一点,但我正在寻找一些易于阅读和简短的方法.
我试图想出一个功能,它可以很好地清理某些字符串,以便它们可以安全地在URL中使用(如post slug),也可以安全地用作文件名.例如,当有人上传文件时,我想确保从名称中删除所有危险字符.
到目前为止,我已经提出了以下函数,我希望能解决这个问题并允许外部UTF-8数据.
/**
* Convert a string to the file/URL safe "slug" form
*
* @param string $string the string to clean
* @param bool $is_filename TRUE will allow additional filename characters
* @return string
*/
function sanitize($string = '', $is_filename = FALSE)
{
// Replace all weird characters with dashes
$string = preg_replace('/[^\w\-'. ($is_filename ? '~_\.' : ''). ']+/u', '-', $string);
// Only allow one dash separator at a time (and make string lowercase)
return mb_strtolower(preg_replace('/--+/u', '-', $string), …
Run Code Online (Sandbox Code Playgroud) 在哪里可以找到文件名中允许的字符列表,具体取决于操作系统?(例如在Linux上,字符:
在文件名中是允许的,但在Windows上不允许)
我想以文件命名为例:
dd.mm.yyyy.log
log4net怎么可能这样?
将文件名传递给firefox浏览器会导致它替换为空格%2520
而不是%20
.
我在一个名为的文件中有以下HTML myhtml.html
:
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
Run Code Online (Sandbox Code Playgroud)
当我加载myhtml.html
到Firefox中时,图像显示为损坏的图像.所以我右键单击链接查看图片,它显示了这个修改过的URL:
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
^
^-----Firefox changed my space to %2520.
Run Code Online (Sandbox Code Playgroud)
有没有搞错?它把我的空间变成了一个%2520
.不应该把它转换成%20
?
如何更改此HTML文件以便浏览器可以找到我的图像?这里发生了什么?
我想要的文件夹名为python,位于我的桌面上.
当我试图达到它时,我收到以下错误
>>> os.chdir('C:\Users\expoperialed\Desktop\Python')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
Run Code Online (Sandbox Code Playgroud) 我知道这不是应该做的事情,但有没有办法使用斜杠字符,通常在Linux中分隔文件名中的目录?
我想在创建文件时为文件名添加时间戳,但我尝试使用空格和斜杠输出大多数DateTime方法.例如:
Debug.WriteLine(DateTime.Now.ToString()); // <-- 9/19/2012 1:41:46 PM
Debug.WriteLine(DateTime.Now.ToShortTimeString()); // <-- 1:41 PM
Debug.WriteLine(DateTime.Now.ToShortDateString()); // <-- 9/19/2012
Debug.WriteLine(DateTime.Now.ToFileTime()); // <-- 129925501061462806
Run Code Online (Sandbox Code Playgroud)
ToFileTime()
有效但不完全是人类可读的.如何将输出格式化为人类可读的时间戳,其中包含可在文件名或扩展名中使用的日期和时间?喜欢这样的东西2011-19-9--13-45-30
?
我遇到了一个奇怪的问题 - 显然有些Node.js模块有如此深的文件夹层次结构,当Windows Copy-Item
路径超过250时,Windows复制命令(或我们实际使用的PowerShell )会遇到臭名昭着的"路径太长"错误chars long.
例如,这是单个Node模块可以创建的文件夹层次结构:
node_modules\nodemailer\node_modules\simplesmtp\node_modules\
xoauth2\node_modules\request\node_modules\form-data\node_modules\
combined-stream\node_modules\delayed-stream\...
Run Code Online (Sandbox Code Playgroud)
看起来很疯狂但是Node模块已经成为现实.
我们需要在部署期间使用复制粘贴(我们不使用像Heroku这样的"聪明"目标平台,其中Git部署是一个选项),这是对Windows的严重限制.
是不是有npm命令或者压缩node_modules
文件夹的东西,或者只包含运行时实际需要的东西?(节点模块通常包含test
我们不需要部署的文件夹等.)任何其他想法如何解决它?遗憾的是,不使用Windows不是一个选项:)