使用 dropzone 上传图像时 POST ajax 出错

Posted

技术标签:

【中文标题】使用 dropzone 上传图像时 POST ajax 出错【英文标题】:Error with POST ajax during image upload with dropzone 【发布时间】:2017-05-28 13:55:39 【问题描述】:

我有一个表单,其中包含了 dropzone.js。该插件一直工作到预览图像,在我收到一个 POST 错误后:dropzone.js:1386 上的500 (Internal Server Error)

Dropzone.prototype.submitRequest = function(xhr, formData, files) 
      return xhr.send(formData);<--here
    ; 

我的看法:

Dropzone.options.images = false;
	$("#images").dropzone( 
 	url: "url('/')/ajax-uploadvehicleimage",
 	paramName: "file",
 	maxFiles: 10,
    maxfilesexceeded: function(file) 
        this.removeFile(file);
       	alert('you no have more picture avaible! Pay for more here');
    ,
     error: function(file, response) 
        if($.type(response) === "string")
            var message = response; //dropzone sends it's own error messages in string
        else
            var message = response.message;
      
        file.previewElement.classList.add("dz-error");
        _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
        _results = [];
        for (_i = 0, _len = _ref.length; _i < _len; _i++) 
            node = _ref[_i];
            _results.push(node.textContent = message);
        

        return _results;
    ,
     success: function(file,done) 
       alert(done);
    
);
<div id="images" class="dropzone">
	</div>

路线:

Route::post('/ajax-uploadvehicleimage','VehicleAddController@uploadimg');

控制器:

public function uploadimg()
         if (Request::hasFile('file'))
    
        //houston we have a file!
        $file = Request::file('file');

        //move it to our public folder and rename it to $name
        Request::file('file')->move('images', 'insert_file_name.'.$file->getClientOriginalExtension());
        echo 'file uploaded!';
        var_dump($file);
    else
        echo 'no file, no bueno';
    
    

可以解释一下是什么问题,我该如何更改或采样?我读了很多关于这个的话题,但没有一个被释放!

编辑: Laravel.log:

[2017-01-13 07:55:38] local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Can't use function return value in write context' in E:\bitnami\apache2\htdocs\vehicle\app\Http\Controllers\VehicleAddController.php:103
Stack trace:
#0 main  

【问题讨论】:

你的 Laravel 日志文件里写了什么?那里应该有一个堆栈跟踪。如果没有,请开启 App debug。 @Erin 添加了日志 只是出于兴趣,您运行的是什么版本的 php? @rchatburn 5.6.21 (cli) 【参考方案1】:

试着改成这个

public function uploadimg()
            $file = Request::file('file');
      if ($file) 
            //move it to our public folder and rename it to $name
            $file->move('images', 'insert_file_name.'.$file->getClientOriginalExtension());
            echo 'file uploaded!';
            var_dump($file);
        else
            echo 'no file, no bueno';
        
     

当您在上传时转到 chrome 上的网络选项卡时,错误的响应预览是什么?

【讨论】:

同样的问题!是的,当我选择时,它来了预览,预览完成,问题来了!

以上是关于使用 dropzone 上传图像时 POST ajax 出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 cloudinary 更改 React-Dropzone 图像上传中的文件名

在 laravel 中解码和移动 base64 编码的图像

如何使用 dropzone 上传 base64 图像资源?

裁剪器在使用 dropzone js 上传之前裁剪多个图像

在 Django 表单中包含 Dropzone 表单时无法进行完整的 POST

使用 Dropzone 和 Laravel 获取要上传的图像