Я использую ruby на рельсах для генерации предопределенного URL, чтобы я мог загрузить файл CSV. Это работает отлично, я даже могу получить CSV, используя предварительно назначенный URL. Проблема в том, что когда я получаю файл CSV, в верхней части CSV появляется случайный блок текста.
------WebKitFormBoundaryrnmGKBwtkSrSvPUR
Content-Disposition: form-data; name="file"; filename="MOCK_DATA.csv"
Content-Type: application/octet-stream
id,first_name,last_name,email,gender,job_title,city,country
1,Emlyn,Dayce,edayce0@example.com,Male,Quality Control Specialist,Debrecen,Hungary
Поэтому, когда я пытаюсь выполнить l oop через CSV, используя следующий код:
require 'csv'
require 'open-uri'
csv = CSV.new(open(presigned_url), headers: false)
csv.each do |csv|
puts csv.to_s
end
Я получаю следующую ошибку:
CSV::MalformedCSVError (Illegal quoting in line 2.):
, которая ссылается на строку:
csv.each do |csv|
Любые решения по: как удалить этот блок текста перед циклом / во время анализа CSV. Или, что еще лучше, в первую очередь предотвращая добавление блока текста с использованием предварительно назначенных URL-адресов S3.
Примечание. Я пытался добавить
content_type: 'text/csv'
к предварительно заданному запросу, однако он не распознает параметр.
ПРОЦЕСС ЗАГРУЗКИ:
Я использую Vuejs для загрузки CSV на S3.
let formData = new FormData();
formData.append("file", this.$refs.file.files[0], { contentType: 'text/csv'
});
this.axios
.put(this.presigned_url, formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
// Handle response
if(response.status == 200){
this.original_file_name = "Processing CSV..."
this.processCsv();
}
});