0
我正在使用prestashop並允許用戶在將產品添加到購物車時上傳自己的文件。PrestaShop:在上傳產品定製(或至少是擴展名)時保留文件名和擴展名
我已經在後端和前端啓用了它,我已經按照this tutorial進行設置。
這是處理ajax調用和上傳文件的代碼塊。我希望它能保持用戶在上傳時提供的文件的原始名稱和擴展名。
這可能嗎?
var files = new Array();
$('.customizationUploadLine').find('input[type="file"]').on('change', prepareUpload);
// Grab the files and set them to our variable
function prepareUpload(event)
{
files.push({'name' : event.target.name, 'file' :event.target.files[0]});
}
function previewFile(target, file) {
$('#uniform-'+target.attr('id')).before($('<img id="preview-'+target.attr('id')+'"/>'));
var preview = $('#preview-'+target.attr('id'));
var reader = new FileReader();
preview.attr('width', 64);
reader.onloadend = function() {
preview.attr('src', reader.result);
}
if (file) {
reader.readAsDataURL(file);
} else {
preview.attr('src', "");
}
}
$('#uploadTrigger').click(function(e) {
if(files.length > 0)
{
$('<div class="myoverlay"></div>').css({
'position' : 'fixed',
'top' : 0,
'left' : 0,
'background' : 'black',
'background' : 'rgba(0,0,0,.5)',
'z-index' : 5999,
'width' : '100%',
'height' : '100%',
'cursor' : 'pointer'
}).appendTo('body');
$('<div class="uploadingfiles">Your files are being uploaded...<img src="'+baseUri+'themes/default-bootstrap/img/ajax-loader.gif"></div>')
.css({
'position' : 'absolute',
'top' : '30%',
'left' : '50%',
'width' : '300px',
'margin-left' : '-150px',
'text-align' : 'center',
'padding' : '10px',
'background' : 'white'
})
.appendTo('.myoverlay');
var data = new FormData();
$.each(files, function(key, obj)
{
data.append(obj.name, obj.file);
});
data.append('submitCustomizedDatas', 1);
data.append('ajax', 1);
$.ajax({
url: $('#customizationForm').attr('action'),
type: 'POST',
data: data,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function(data, textStatus, jqXHR)
{
if(typeof data.errors === 'undefined')
{
$.each(files, function(key, obj)
{
$('input[name="'+obj.name+'"]').addClass('filled');
previewFile($('input[name="'+obj.name+'"]'), obj.file);
});
$('.uploadingfiles').text('Upload Complete!');
}
else
{
$('.uploadingfiles').text('Error while uploading, please refresh the page and try again');
}
$('.myoverlay').click(function(){$(this).remove()});
},
error: function(jqXHR, textStatus, errorThrown)
{
$('.uploadingfiles').text('ERRORS: ' + errorThrown);
$('.myoverlay').click(function(){$(this).remove()});
}
});
} // end checking files length
else alert('Nothing to upload!');
});
目前文件上傳到上傳目錄(太棒了!),但它有沒有擴展綁在它真正時髦的名字。我希望圖片保留名稱和擴展名,以便我可以將該信息傳遞到結帳屏幕並在其中顯示上傳的圖片。
感謝延伸!問題 - 爲什麼你不會推薦這樣做?是否存在安全風險? – Hanny
我不認爲存在安全風險,但有兩個客戶上傳同名文件的可能性很小(但不是太多),例如, 「1.jpg」,其餘如下;) – sarcom
啊!好點子。也許我會附加一個日期/時間標記,以防止發生。 感謝您的幫助! – Hanny