2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
Content-Type您是否嘗試像這樣在請求標(biāo)頭中指定您的
Http::attach('file', file_get_contents($tempfile), 'myfile.pdf')->withHeaders([
'Content-Type' => 'application/pdf',
])->post('example.org')->json();

TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊
嘗試直接從郵遞員復(fù)制代碼,看看您可能會丟失什么。
所以這是一個很好的問題,因為處理二進(jìn)制數(shù)據(jù)可能很棘手。我還沒有完全完成您想要做的事情,但是,我制作了一個 laravel 頁面,該頁面上傳一個電子表格進(jìn)程,該進(jìn)程會更改數(shù)據(jù),然后彈出修改后的電子表格的下載。使用二進(jìn)制文件是一件非常痛苦的事情,但這就是我學(xué)到的東西。首先是基本形式。
<input id="file" type="file" class="form-control" name="file" style="height:auto;" required />
然后ajax上傳
$.ajax({
async: true,
method: 'POST',
enctype: 'multipart/form-data',
processData: false,
contentType: false,
cache: false,
url: "priceIncrease/parseHeaders",
data: formData,
xhr: function () {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', progress, false);
}
return myXhr;
}
});
這里有額外的內(nèi)容是處理進(jìn)度條,但它與處理二進(jìn)制數(shù)據(jù)無關(guān),所以我將跳過它。
現(xiàn)在,我將文件解析為數(shù)組并對其進(jìn)行處理,并希望將電子表格返回給用戶,這就是二進(jìn)制 gigery pokery 的開始。當(dāng)我返回數(shù)據(jù)時,我必須將其編碼為 base64
$fqn = storage_path() . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . $priceIncreaseResult['filepath'] . $priceIncreaseResult['filename'];
$response = base64_encode(file_get_contents($fqn));
然后在前端我給它mime類型并從base64轉(zhuǎn)換回來
if(data['progress']['file']){
var result = data['progress']['file'];
var a = document.createElement("a");
var file = document.getElementById("file");
var filename = file.files[0].name;
console.log(filename);
var blob = new Blob([s2ab(atob(result))], {
type: 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,'
});
a.href = URL.createObjectURL(blob);
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
}
這里的最后一部分是類型轉(zhuǎn)換
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
我知道這不是一次性的答案,但我確實希望您能得到一些關(guān)于使用二進(jìn)制數(shù)據(jù)的激勵。
- 2 回答
- 0 關(guān)注
- 288 瀏覽
添加回答
舉報