douzhen5158 2017-06-17 21:07
浏览 70
已采纳

无法在Laravel上传图像

I have an HTML to upload multiple images.

I tried to debug and it return code 200 for all image I uploaded.

My code can be too much, almost for feature drag image to sort. But I still keep all code.

I don't know where my bug start from?

It also run to success: function and show toast message: Sweet Success.

But it show error in console log like: GET http://localhost:8000/storage/apartments/JnJfDtTx2ix3W7z8J6PDCD4JskK0WZBWLrkSnUHW.jpeg 404 (Not Found)

Here is all code to do this:

<form role="form" action="" method="POST" enctype="multipart/form-data">
    <!-- Images Tab -->
    <div role="tabpanel" class="tab-pane" id="images">
        <button class="btn btn-primary" type="button" id="upload"><i class="voyager-upload"></i>
            Upload image
        </button>
        <div id="uploadPreview" style="display:none;"></div>

        <div id="uploadProgress" class="progress active progress-striped" style="display:none;">
            <div class="progress-bar progress-bar-success" style="width: 0%"></div>
        </div>
        <div class="apartment-images">
            <div class="row" id="sort-image">
                <div class="col-xs-6 col-md-3 col-lg-2 draggable" v-for="(index, path) in files">
                    <div class="apartment-image">
                        <img :src="path" class="img-responsive">
                        <input type="hidden" name="images[]" :value="path">
                        <div class="row">
                            <div class="col-xs-6"><span v-if="index == 0">Main image</span></div>
                            <div class="col-xs-6 text-right"><button type="button" v-on:click="remove(index)" class="btn btn-default"><i class="voyager-trash"></i> Delete</button></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>

    <!-- CSRF TOKEN -->
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <br>
    <div class="panel-footer">
        <button type="submit" class="btn btn-success">Save Data</button>
    </div>
</form>

<iframe id="form_target" name="form_target" style="display:none"></iframe>
<form id="my_form" action="{{ route('voyager.upload') }}" target="form_target" method="post"
      enctype="multipart/form-data" style="width:0px;height:0;overflow:hidden">
    <input name="image" id="upload_file" type="file" onchange="$('#my_form').submit();this.value='';">
    <input type="hidden" name="type_slug" id="type_slug" value="{{ $dataType->slug }}">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

And Javascript code:

@section('javascript')
<script>
    $('document').ready(function () {
        var apartment_images = [];

        @if(isset($apartment->slider_images))
            apartment_images = <?php echo json_encode(old('slider_images', $apartment->slider_images)) ?>;
        @elseif(old('slider_images'))
            apartment_images = <?php echo json_encode(old('slider_images')); ?>;
        @endif

        var manager = new Vue({
            el: '.apartment-images',
            data: {
                files: apartment_images
            },
            ready: function() {
                var vm = this;
                var list = document.getElementById("sort-image");
                Sortable.create(list, {
                    draggable: '.draggable',
                    onUpdate: function(evt) {
                        vm.reorder(evt.oldIndex, evt.newIndex);
                    }
                });
            },
            methods: {
                reorder(oldIndex, newIndex) {
                    // move the item in the underlying array
                    this.files.splice(newIndex, 0, this.files.splice(oldIndex, 1)[0]);
                },
                remove: function(index) {
                    this.files.splice(index, 1);
                }
            }
        });

        CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
        //var imageWidth = 762, imageHeight = 1100;
        $("#upload").dropzone({
            url: "{{ route('voyager.media.upload') }}",
            previewsContainer: "#uploadPreview",
            totaluploadprogress: function (uploadProgress, totalBytes, totalBytesSent) {
                $('#uploadProgress .progress-bar').css('width', uploadProgress + '%');
                if (uploadProgress == 100) {
                    $('#uploadProgress').delay(1500).slideUp(function () {
                        $('#uploadProgress .progress-bar').css('width', '0%');
                    });
                }
            },
            acceptedFiles: ".jpeg,.jpg,.png,.gif",
            processing: function () {
                $('#uploadProgress').fadeIn();
            },
            sending: function (file, xhr, formData) {
                formData.append("_token", CSRF_TOKEN);
                formData.append("upload_path", 'public/apartments');
                console.log(file);
            },
            success: function (e, res) {
                if (res.success) {
                    manager.files.push('/storage/' + res.path);
                    toastr.success(res.message, "Sweet Success!");
                } else {
                    toastr.error(res.message, "Whoopsie!");
                }
            },
            error: function (e, res, xhr) {
                toastr.error(res, "Whoopsie");
            },
            queuecomplete: function () {
                //getFiles(manager.folders);
            }
        });
    });
</script>
@stop
  • 写回答

1条回答 默认 最新

  • doob0526 2017-06-18 04:21
    关注

    The URL you're using seems incorrect. You shouldn't be accessing storage directly. Your files end up under projects/apartments, so you can change the URL to:

    http://localhost:8000/apartments/JnJfDtTx2ix3W7z8J6PDCD4JskK0WZBWLrkSnUHW.jpeg
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料