Ошибка кодирования, когда аргумент содержит & - PullRequest
0 голосов
/ 27 июня 2018

Я отправляю имя файла через веб-форму и получаю cherrypy, чтобы получить это имя файла и открыть его для обработки. у меня возникает проблема, когда файл содержит « & », я получаю следующую ошибку. У меня нет проблем, когда я удаляю «&» из имени файла

имя файла:

выставление счетов - SP30075306 Heidelberg Dust & Dropper.xlsm

Код Python:

reload(sys)  
sys.setdefaultencoding('utf8')

@cherrypy.expose
def cost_breakdown(self, **mate):
    print mate['file'].encode('UTF8')
    offer_path = os.path.join('C:/Users/rihanio/Dropbox/Projects/Python_code/work/gateway/Temp_Project_Files/temp_invoicing', mate['file'].encode('UTF8'))

Ошибка распечатки:

выставление счетов - SP30075306 Гейдельбергская пыль

[Errno 2] Нет такого файла или каталога: u'C: / Users / rihanio / Dropbox / Проекты / Python_code / работа / шлюз / Temp_Project_Files / temp_invoicing \ выставление счетов - SP30075306 Heidelberg Dust '

1 Ответ

0 голосов
/ 27 июня 2018

Я решил эту проблему путем кодирования имени файла на стороне веб-формы перед отправкой в ​​python.

encodeURIComponent (file.name)

$.ajax({url: '/cost_breakdown?sp=&wo=&pm=' +cookie_read +'&contract=' +contract +'&file=' +encodeURIComponent(file.name),
...