【问题标题】:Save Multipart Image File Sent From Android to Laravel 5.1将从 Android 发送的多部分图像文件保存到 Laravel 5.1
【发布时间】:2016-03-10 05:52:01
【问题描述】:

更新问题解决了。这是文件夹权限错误。简单的 chmod 纠正了它。

图片很容易发送。问题是,我无法将其保存到磁盘。 我尝试了几种方法,但没有一个对我有用。

这是安卓代码

      mFileInputStream = new FileInputStream(
                Environment.getExternalStorageDirectory().toString()+"/Pictures/msp/" + mIFileName);
        URL mUrl = new URL(mPostURL);
        HttpURLConnection mHttpUrlConnection = (HttpURLConnection) mUrl.openConnection();
        mHttpUrlConnection.setDoInput(true);
        mHttpUrlConnection.setDoOutput(true);
        mHttpUrlConnection.setUseCaches(false);
        mHttpUrlConnection.setConnectTimeout(10000);
        mHttpUrlConnection.setChunkedStreamingMode(1024);
        mHttpUrlConnection.setInstanceFollowRedirects(false);
        mHttpUrlConnection.setRequestMethod("POST");
        mHttpUrlConnection.setRequestProperty("Connection", "Keep-Alive");
        mHttpUrlConnection.setRequestProperty("Content-Type",
                "multipart/form-data;boundary="+boundary);
        mHttpUrlConnection.setRequestProperty("charset", "utf-8");
        //Write Post Data
        DataOutputStream wr = new DataOutputStream(mHttpUrlConnection.getOutputStream());
        wr.writeBytes(mTwoHyphens + boundary + mLineEnd);
        wr.writeBytes("Content-Disposition: form-data; name=\"title\""+ mLineEnd);
        wr.writeBytes(mLineEnd);
        wr.writeBytes(mIFileName);
        wr.writeBytes(mLineEnd);
        wr.writeBytes(mTwoHyphens + boundary + mLineEnd);
        wr.writeBytes("Content-Disposition: form-data; name=\"description\""+ mLineEnd);
        wr.writeBytes(mLineEnd);
        wr.writeBytes("MSP Staff-Tailor-Merch Picture");
        wr.writeBytes(mLineEnd);
        wr.writeBytes(mTwoHyphens + boundary + mLineEnd);
        wr.writeBytes("Content-Disposition: form-data; name=\"photo\";filename=\""
                + mIFileName +"\"" + mLineEnd + "Content-Type: image/jpeg\r\n" +"\r\n");
        wr.writeBytes(mLineEnd);

请有人告诉我如何在 laravel 5.1 中读取这个上传的图像文件并将其保存到磁盘。 (它不是 base64 编码的)。 Request::hasfile('image') 返回 True。 但是对文件的任何操作都会导致错误。

这是 laravel compact() 的输出

{"reply":"success","title":"STAFF_faizan.png","description":"MSP Staff-Tailor-Merch Picture","photo":null,"filename":null}

而这个是 laravel var_dump() 所有输入中的一个。

["title"]=>  string(16) "STAFF_faizan.png"  ["description"]=>  string(30) "MSP Staff-Tailor-Merch Picture"  ["photo"]=>  object(Symfony\Component\HttpFoundation\File\UploadedFile)#29 (7) {    ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>    bool(false)    ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>    string(16) "STAFF_faizan.png"    ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>    string(10) "image/jpeg"    ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>    int(25617)    ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>    int(0)    ["pathName":"SplFileInfo":private]=>    string(14) "/tmp/phpG3oqEy"    ["fileName":"SplFileInfo":private]=>    string(9) "phpG3oqEy"  }}

【问题讨论】:

  • 文件好像很好地进入了laravel,把你的laravel代码放在这里,需要看看。
  • Route::post('up',function(){ $title = Input::get('title'); $path = public_path() . '/uploads/'; try { if (Request::hasFile('photo')){ $photo = Request::file('photo'); $photo->move($path,$title); $reply = '文件上传'; }else { $ reply = '找不到文件'; } }catch (Exception $e){ $reply = $e; } return $reply; });

标签: php android file laravel upload


【解决方案1】:

试试这个。

$photo = Request::file('photo'); $photo->move('/path/to/move', 'filename' . '.' . $photo->getExtention());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多