关于form表单上传文件的问题

最近在学习php,刚好学到利用表单上传文件这一知识。在学习的过程中,出现了这样几个问题,我是小白,还请高手指点。

大家都知道在上传文件时,我们要设置表单的MIME编码。默认情况,enctype的编码格:application/x-www-form-urlencoded,不能用于文件上传, 只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作。但是我在接下来的操作中,遇到了这样的问题。

<?php
  if (isset($_POST[‘submit‘]) && $_POST[‘submit‘] != null) {
   print_r($_FILES);
   $upload_dir = ‘upload/‘;
   $tmp_name  =  $_FILES [ "upload_file" ][ "tmp_name" ];
   $name  =  $_FILES [ "upload_file" ][ "name" ];
     if(move_uploaded_file ($tmp_name,$upload_dir.$name)== true){
         echo "上传文件成功!";
    }
?>
<form action="" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="upload_file" /><br />
<input type="submit" name="submit" value="提交" />
</form>

显示错误

起初我以为是form表单不支持word文档格式,于是找个找图片,试了一下。

发现真的可以了!于是又找了另一张图片试了一下。

发现又不行了!

于是就多找了几幅图片试了一下,终于发现原来只要文件名含有中文的都不行!于是把刚开始那个word文件的文件名改成了英文名a.doc,又试了一下。

发现真的可以了!然后在upload文件夹看一下里面的内容。

发现,文件名没有中文的都上传成功了!

总结和反思:利用form表单上传文件,文件名不能为中文。这样肯定是不合理的。如何解决这个问题呢?楼主是小白,希望各位大神给予指点。

时间: 2024-10-12 00:31:03

关于form表单上传文件的问题的相关文章

android form表单上传文件

原文地址:http://menuz.iteye.com/blog/1282097 Android程序使用http上传文件 有时,在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的方式.最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器.  Html代码   <form action="/Test

使用form表单上传文件

在使用form表单上传文件时候,input[type='file']是必然会用的,其中有一些小坑需要避免. 1.form的 enctype="multipart/form-data" 已经是个老生常谈的问题了,相信都能注意到,就不多说了. 2.上传下载的请求是不能用ajax提交返回json的. 3.当使用input[type='file'] 的onChange事件来触发文件上传的时候要注意当上传成功时清空input的时候,不能简单的使用$("input").val(

form表单上传文件

注意form表单上传文件的时候,要加上   enctype这个属性 原文地址:https://www.cnblogs.com/xiaoxiaoyao/p/8541923.html

django 基于form表单上传文件和基于ajax上传文件

一.基于form表单上传文件 1.html里是有一个input type="file" 和 'submit'的标签 2.vies.py def fileupload(request): if request.method == 'POST': print(request.POST) print(request.FILES) # from django.core.files.uploadedfile import InMemoryUploadedFile print(type(reque

form表单上传文件使用multipart请求处理

在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——spring MVC其中的一个优势.Spring通过对Servlet API的HttpServletRequest接口进行扩展,使其能够很好地处理文件上传.扩展后的接口名为org.springframework.web.multipart.MultipartHttpServletRequest,其内容如清单7-31所示. 清单7-31  org.springf

PHP 后台程序配置config文件,及form表单上传文件

一,配置config文件 1获取config.php文件数组, 2获取form 表单提交的值 3保存更新config.php文件,代码如下: 1 $color=$_POST['color']; 2 $backtype=$_POST['backtype']; 3 4 $settings=include(dirname(__DIR__).'/config.php'); 5 6 $settings['themescolor']=(int)$color; 7 $settings['themesbackg

ajax上传文件 基于jquery form表单上传文件

<script src="/static/js/jquery.js"></script><script> $("#reg-btn").click(function () { // 1. 取到用户填写的数据 var form_data_obj = new FormData(); form_data_obj.append('username',$('#id_username').val()); form_data_obj.append

nodejs-http 对form表单上传文件数据的解析过程

前几天碰到了一个需求,允许接收前端用户上传的文件. 当时为了解决问题索性就上github搜了下,找了一个基于nodejs的开发插件. 后来功能实现后觉得意犹未尽,于是自己想试试去写一个类似功能的插件,方便以后拓展,然后就这么开始了. 先来说说应用层的http,数据从前端是怎么被它包装然后传到服务器的. 我们可以在浏览器中查看我们发一个请求的时候包什么格式的,例如我们访问百度时得到的请求包内容: Remote Address:180.97.33.107:443 Request URL:https:

C# 模拟Form表单上传文件方法

public static string UploadFile(string url, HttpPostedFileBase file,string FieldName) { Stream fs = file.InputStream; if (!fs.CanRead) { return ""; } byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); fs.Close(); string bou