我使用laravel5和windows7进行网络开发。我的视图中有一些链接,点击这些用户后可以下载他们想要的文件。
<div class="col-xs-12 col-sm-12 col-md-12 flip pull-right">
<a href="download/docs/ezharNameKarshenasi.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />فرم اظهارنامه کارشناسی</a>
<a href="download/docs/drakhasteSodoreParvaneTasis.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />فرم درخواست صدور پروانه تاسیس</a>
<a href="download/docs/taghazayeSodooreParvane.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />فرم تقاضای صدور پروانه موافقت اصولی آبزیان</a>
<a href="download/docs/sherkateSahamiIran.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />فرم پروانه موافقت اصولی ماهیان سرد آبی در سیستم مدار بسته</a>
<a href="download/docs/morafiName.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />فرم معرفی نامه جهت در یافت اعتبارات بانکی</a>
<a href="download/docs/نامه.docx" style="display: block;margin-top: 20px;margin-bottom: 20px;"><img src="images/docx.gif" />نامه</a>
</div>
但是某些文件名的名称中包含unicode字符。例如:C:\ wamp \ www \ shilat-sistanL5 \ public \ docs \نامه.docx。
在我的路线文件中,我添加了以下代码:
Route::get('download/{type}/{filename}', function($type,$filename)
{
$file = public_path() .'\\'.$type. '\\' . $filename; // or wherever you have stored your PDF files
return response()->download($file);
});
当试图下载نامه。docx文件时,我遇到了这个错误: File.php第37行中的FileNotFoundException:文件“C:\ wamp \ www \ shilat-sistanL5 \ public \ docs \نامه.docx”不存在。
我知道这个问题与php有关,不支持utf-8文件。任何人都有解决这个问题的方法吗?
答案 0 :(得分:0)
我没有使用PHP的经验,但我遇到了与JSP几乎完全相同的问题。 我解决它的方法是通过编码URL。
对于Java,我使用了owasp的库
public static String paramEncode(String param) {
return org.owasp.encoder.Encode.forUriComponent(param);
}
但对于PHP,我认为你可以使用像
这样的东西string urlencode ( string $str )